<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.11"/>
<title>Cheetah Software: HardwareBridge Class Reference</title>
<link href="../../tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../jquery.js"></script>
<script type="text/javascript" src="../../dynsections.js"></script>
<link href="../../navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../resize.js"></script>
<script type="text/javascript" src="../../navtreedata.js"></script>
<script type="text/javascript" src="../../navtree.js"></script>
<script type="text/javascript">
  $(document).ready(initResizable);
  $(window).load(resizeHeight);
</script>
<link href="../../search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../search/searchdata.js"></script>
<script type="text/javascript" src="../../search/search.js"></script>
<script type="text/javascript">
  $(document).ready(function() { init_search(); });
</script>
<link href="../../doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td id="projectalign" style="padding-left: 0.5em;">
   <div id="projectname">Cheetah Software
   &#160;<span id="projectnumber">1.0</span>
   </div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.11 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
</script>
  <div id="navrow1" class="tabs">
    <ul class="tablist">
      <li><a href="../../index.html"><span>Main&#160;Page</span></a></li>
      <li><a href="../../namespaces.html"><span>Namespaces</span></a></li>
      <li class="current"><a href="../../annotated.html"><span>Classes</span></a></li>
      <li><a href="../../files.html"><span>Files</span></a></li>
      <li>
        <div id="MSearchBox" class="MSearchBoxInactive">
        <span class="left">
          <img id="MSearchSelect" src="../../search/mag_sel.png"
               onmouseover="return searchBox.OnSearchSelectShow()"
               onmouseout="return searchBox.OnSearchSelectHide()"
               alt=""/>
          <input type="text" id="MSearchField" value="Search" accesskey="S"
               onfocus="searchBox.OnSearchFieldFocus(true)" 
               onblur="searchBox.OnSearchFieldFocus(false)" 
               onkeyup="searchBox.OnSearchFieldChange(event)"/>
          </span><span class="right">
            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="../../search/close.png" alt=""/></a>
          </span>
        </div>
      </li>
    </ul>
  </div>
  <div id="navrow2" class="tabs2">
    <ul class="tablist">
      <li><a href="../../annotated.html"><span>Class&#160;List</span></a></li>
      <li><a href="../../classes.html"><span>Class&#160;Index</span></a></li>
      <li><a href="../../inherits.html"><span>Class&#160;Hierarchy</span></a></li>
      <li><a href="../../functions.html"><span>Class&#160;Members</span></a></li>
    </ul>
  </div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
  <div id="nav-tree">
    <div id="nav-tree-contents">
      <div id="nav-sync" class="sync"></div>
    </div>
  </div>
  <div id="splitbar" style="-moz-user-select:none;" 
       class="ui-resizable-handle">
  </div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('d8/dd8/class_hardware_bridge.html','../../');});
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>

<div class="header">
  <div class="summary">
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="#pro-attribs">Protected Attributes</a> &#124;
<a href="../../da/dc4/class_hardware_bridge-members.html">List of all members</a>  </div>
  <div class="headertitle">
<div class="title">HardwareBridge Class Reference</div>  </div>
</div><!--header-->
<div class="contents">

<p><code>#include &lt;<a class="el" href="../../d6/dd5/_hardware_bridge_8h_source.html">HardwareBridge.h</a>&gt;</code></p>
<div id="dynsection-0" onclick="return toggleVisibility(this)" class="dynheader closed" style="cursor:pointer;">
  <img id="dynsection-0-trigger" src="../../closed.png" alt="+"/> Inheritance diagram for HardwareBridge:</div>
<div id="dynsection-0-summary" class="dynsummary" style="display:block;">
</div>
<div id="dynsection-0-content" class="dyncontent" style="display:none;">
<div class="center"><img src="../../db/dfc/class_hardware_bridge__inherit__graph.png" border="0" usemap="#_hardware_bridge_inherit__map" alt="Inheritance graph"/></div>
<map name="_hardware_bridge_inherit__map" id="_hardware_bridge_inherit__map">
</map>
</div>
<div id="dynsection-1" onclick="return toggleVisibility(this)" class="dynheader closed" style="cursor:pointer;">
  <img id="dynsection-1-trigger" src="../../closed.png" alt="+"/> Collaboration diagram for HardwareBridge:</div>
<div id="dynsection-1-summary" class="dynsummary" style="display:block;">
</div>
<div id="dynsection-1-content" class="dyncontent" style="display:none;">
<div class="center"><img src="../../d5/de1/class_hardware_bridge__coll__graph.png" border="0" usemap="#_hardware_bridge_coll__map" alt="Collaboration graph"/></div>
<map name="_hardware_bridge_coll__map" id="_hardware_bridge_coll__map">
</map>
</div>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:a5de3c6c9f311c568c2ba4468e9b73313"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d8/dd8/class_hardware_bridge.html#a5de3c6c9f311c568c2ba4468e9b73313">HardwareBridge</a> (<a class="el" href="../../d4/d6a/class_robot_controller.html">RobotController</a> *robot_ctrl)</td></tr>
<tr class="separator:a5de3c6c9f311c568c2ba4468e9b73313"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abbe4b85c2153d1c4f9718b678587cc7b"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d8/dd8/class_hardware_bridge.html#abbe4b85c2153d1c4f9718b678587cc7b">prefaultStack</a> ()</td></tr>
<tr class="separator:abbe4b85c2153d1c4f9718b678587cc7b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6b4e33274b7f6f1a78987d9b5480f9b5"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d8/dd8/class_hardware_bridge.html#a6b4e33274b7f6f1a78987d9b5480f9b5">setupScheduler</a> ()</td></tr>
<tr class="separator:a6b4e33274b7f6f1a78987d9b5480f9b5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a92eb174542c2885280ad77c257d887b8"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d8/dd8/class_hardware_bridge.html#a92eb174542c2885280ad77c257d887b8">initError</a> (const char *reason, bool printErrno=false)</td></tr>
<tr class="separator:a92eb174542c2885280ad77c257d887b8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4a8078bc3b30d7260281598990243262"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d8/dd8/class_hardware_bridge.html#a4a8078bc3b30d7260281598990243262">initCommon</a> ()</td></tr>
<tr class="separator:a4a8078bc3b30d7260281598990243262"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a038873f692d1128e00c75f2b897ebdbd"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d8/dd8/class_hardware_bridge.html#a038873f692d1128e00c75f2b897ebdbd">~HardwareBridge</a> ()</td></tr>
<tr class="separator:a038873f692d1128e00c75f2b897ebdbd"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae6905c9dcc7d67badb4bcd79ef6f62a1"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d8/dd8/class_hardware_bridge.html#ae6905c9dcc7d67badb4bcd79ef6f62a1">handleGamepadLCM</a> (const lcm::ReceiveBuffer *rbuf, const std::string &amp;chan, const gamepad_lcmt *msg)</td></tr>
<tr class="separator:ae6905c9dcc7d67badb4bcd79ef6f62a1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa6d23f7fccce82cb3a351dd48c4433be"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d8/dd8/class_hardware_bridge.html#aa6d23f7fccce82cb3a351dd48c4433be">handleInterfaceLCM</a> ()</td></tr>
<tr class="separator:aa6d23f7fccce82cb3a351dd48c4433be"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa5bd1ccd29e15e2f0ecb5b3f65795784"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d8/dd8/class_hardware_bridge.html#aa5bd1ccd29e15e2f0ecb5b3f65795784">handleControlParameter</a> (const lcm::ReceiveBuffer *rbuf, const std::string &amp;chan, const control_parameter_request_lcmt *msg)</td></tr>
<tr class="separator:aa5bd1ccd29e15e2f0ecb5b3f65795784"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a83a317be30bef73635e34beb19a303ac"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d8/dd8/class_hardware_bridge.html#a83a317be30bef73635e34beb19a303ac">publishVisualizationLCM</a> ()</td></tr>
<tr class="separator:a83a317be30bef73635e34beb19a303ac"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa3e2460f9609470b32190353d9da2cd9"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d8/dd8/class_hardware_bridge.html#aa3e2460f9609470b32190353d9da2cd9">run_sbus</a> ()</td></tr>
<tr class="separator:aa3e2460f9609470b32190353d9da2cd9"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-attribs"></a>
Protected Attributes</h2></td></tr>
<tr class="memitem:a0389f737fe143e8a4bbf9433c129d149"><td class="memItemLeft" align="right" valign="top"><a class="el" href="../../d2/d31/class_periodic_task_manager.html">PeriodicTaskManager</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d8/dd8/class_hardware_bridge.html#a0389f737fe143e8a4bbf9433c129d149">taskManager</a></td></tr>
<tr class="separator:a0389f737fe143e8a4bbf9433c129d149"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa63048fffaaddf1c55a8f18a785396ec"><td class="memItemLeft" align="right" valign="top"><a class="el" href="../../dc/d6d/class_print_task_status.html">PrintTaskStatus</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d8/dd8/class_hardware_bridge.html#aa63048fffaaddf1c55a8f18a785396ec">statusTask</a></td></tr>
<tr class="separator:aa63048fffaaddf1c55a8f18a785396ec"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0928b007abfd50e0edc7d38de4bce932"><td class="memItemLeft" align="right" valign="top"><a class="el" href="../../d4/d51/struct_gamepad_command.html">GamepadCommand</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d8/dd8/class_hardware_bridge.html#a0928b007abfd50e0edc7d38de4bce932">_gamepadCommand</a></td></tr>
<tr class="separator:a0928b007abfd50e0edc7d38de4bce932"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac5270dbb17267e1ac3681ce92215296b"><td class="memItemLeft" align="right" valign="top"><a class="el" href="../../d3/d60/struct_visualization_data.html">VisualizationData</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d8/dd8/class_hardware_bridge.html#ac5270dbb17267e1ac3681ce92215296b">_visualizationData</a></td></tr>
<tr class="separator:ac5270dbb17267e1ac3681ce92215296b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af9442d44776906a9a3c9cea911784891"><td class="memItemLeft" align="right" valign="top"><a class="el" href="../../d0/d6d/struct_cheetah_visualization.html">CheetahVisualization</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d8/dd8/class_hardware_bridge.html#af9442d44776906a9a3c9cea911784891">_mainCheetahVisualization</a></td></tr>
<tr class="separator:af9442d44776906a9a3c9cea911784891"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4407e65acb5e3afc54adee8adeb5627f"><td class="memItemLeft" align="right" valign="top">lcm::LCM&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d8/dd8/class_hardware_bridge.html#a4407e65acb5e3afc54adee8adeb5627f">_interfaceLCM</a></td></tr>
<tr class="separator:a4407e65acb5e3afc54adee8adeb5627f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a21be7448839aeabc1735129b851bfd42"><td class="memItemLeft" align="right" valign="top">lcm::LCM&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d8/dd8/class_hardware_bridge.html#a21be7448839aeabc1735129b851bfd42">_visualizationLCM</a></td></tr>
<tr class="separator:a21be7448839aeabc1735129b851bfd42"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4b91d691aac1ad94f0c600e2ec2e084a"><td class="memItemLeft" align="right" valign="top">control_parameter_respones_lcmt&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d8/dd8/class_hardware_bridge.html#a4b91d691aac1ad94f0c600e2ec2e084a">_parameter_response_lcmt</a></td></tr>
<tr class="separator:a4b91d691aac1ad94f0c600e2ec2e084a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa700e6321dfd8badb647e198349d3fb7"><td class="memItemLeft" align="right" valign="top"><a class="el" href="../../d5/d09/struct_spi_data.html">SpiData</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d8/dd8/class_hardware_bridge.html#aa700e6321dfd8badb647e198349d3fb7">_spiData</a></td></tr>
<tr class="separator:aa700e6321dfd8badb647e198349d3fb7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5ccd0cdd11a61439a08f8f7301f3294f"><td class="memItemLeft" align="right" valign="top"><a class="el" href="../../d0/ddd/struct_spi_command.html">SpiCommand</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d8/dd8/class_hardware_bridge.html#a5ccd0cdd11a61439a08f8f7301f3294f">_spiCommand</a></td></tr>
<tr class="separator:a5ccd0cdd11a61439a08f8f7301f3294f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a80a343c681ff51562b875190a7b2f4dc"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d8/dd8/class_hardware_bridge.html#a80a343c681ff51562b875190a7b2f4dc">_firstRun</a> = true</td></tr>
<tr class="separator:a80a343c681ff51562b875190a7b2f4dc"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae259e674ae1cd4f3043fdd0236038617"><td class="memItemLeft" align="right" valign="top"><a class="el" href="../../d9/d42/class_robot_runner.html">RobotRunner</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d8/dd8/class_hardware_bridge.html#ae259e674ae1cd4f3043fdd0236038617">_robotRunner</a> = nullptr</td></tr>
<tr class="separator:ae259e674ae1cd4f3043fdd0236038617"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad52a70b35d6c19a736ea3287d974c66d"><td class="memItemLeft" align="right" valign="top"><a class="el" href="../../d0/d73/class_robot_control_parameters.html">RobotControlParameters</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d8/dd8/class_hardware_bridge.html#ad52a70b35d6c19a736ea3287d974c66d">_robotParams</a></td></tr>
<tr class="separator:ad52a70b35d6c19a736ea3287d974c66d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab0027a2f7c8b03445478043806ec230c"><td class="memItemLeft" align="right" valign="top"><a class="el" href="../../d0/d99/c_types_8h.html#a3f7e2bcbb0b4c338f3c4f6c937cd4234">u64</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d8/dd8/class_hardware_bridge.html#ab0027a2f7c8b03445478043806ec230c">_iterations</a> = 0</td></tr>
<tr class="separator:ab0027a2f7c8b03445478043806ec230c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aac1696d3ecb97c660ffd9a13771892a9"><td class="memItemLeft" align="right" valign="top">std::thread&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d8/dd8/class_hardware_bridge.html#aac1696d3ecb97c660ffd9a13771892a9">_interfaceLcmThread</a></td></tr>
<tr class="separator:aac1696d3ecb97c660ffd9a13771892a9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa78e0f3c26667723c9501963aafa9173"><td class="memItemLeft" align="right" valign="top">volatile bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d8/dd8/class_hardware_bridge.html#aa78e0f3c26667723c9501963aafa9173">_interfaceLcmQuit</a> = false</td></tr>
<tr class="separator:aa78e0f3c26667723c9501963aafa9173"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab8487082663e527210d4e1d89387902b"><td class="memItemLeft" align="right" valign="top"><a class="el" href="../../d8/d86/class_control_parameters.html">ControlParameters</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d8/dd8/class_hardware_bridge.html#ab8487082663e527210d4e1d89387902b">_userControlParameters</a> = nullptr</td></tr>
<tr class="separator:ab8487082663e527210d4e1d89387902b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aeb8b07d91413a757e0085ad8ac5fa300"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d8/dd8/class_hardware_bridge.html#aeb8b07d91413a757e0085ad8ac5fa300">_port</a></td></tr>
<tr class="separator:aeb8b07d91413a757e0085ad8ac5fa300"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock">
<p>Definition at line <a class="el" href="../../d6/dd5/_hardware_bridge_8h_source.html#l00023">23</a> of file <a class="el" href="../../d6/dd5/_hardware_bridge_8h_source.html">HardwareBridge.h</a>.</p>
</div><h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
<a class="anchor" id="a5de3c6c9f311c568c2ba4468e9b73313"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">HardwareBridge::HardwareBridge </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="../../d4/d6a/class_robot_controller.html">RobotController</a> *&#160;</td>
          <td class="paramname"><em>robot_ctrl</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Definition at line <a class="el" href="../../d6/dd5/_hardware_bridge_8h_source.html#l00025">25</a> of file <a class="el" href="../../d6/dd5/_hardware_bridge_8h_source.html">HardwareBridge.h</a>.</p>

<p>References <a class="el" href="../../d6/dd5/_hardware_bridge_8h_source.html#l00062">_robotRunner</a>, <a class="el" href="../../d6/dd5/_hardware_bridge_8h_source.html#l00067">_userControlParameters</a>, <a class="el" href="../../dc/dd7/test__casadi_8cpp_source.html#l00202">f()</a>, <a class="el" href="../../d4/d6a/class_robot_controller.html#a4f978bdc5c1e5c868ca578f1061489e7">RobotController::getUserControlParameters()</a>, <a class="el" href="../../d9/da0/_hardware_bridge_8cpp_source.html#l00030">initCommon()</a>, <a class="el" href="../../d9/da0/_hardware_bridge_8cpp_source.html#l00017">initError()</a>, <a class="el" href="../../d9/da0/_hardware_bridge_8cpp_source.html#l00060">prefaultStack()</a>, <a class="el" href="../../d9/da0/_hardware_bridge_8cpp_source.html#l00075">setupScheduler()</a>, and <a class="el" href="../../d6/dd5/_hardware_bridge_8h_source.html#l00050">taskManager</a>.</p>
<div class="fragment"><div class="line"><a name="l00026"></a><span class="lineno">   26</span>&#160;      : <a class="code" href="../../d8/dd8/class_hardware_bridge.html#aa63048fffaaddf1c55a8f18a785396ec">statusTask</a>(&amp;<a class="code" href="../../d8/dd8/class_hardware_bridge.html#a0389f737fe143e8a4bbf9433c129d149">taskManager</a>, 0.5<a class="code" href="../../dc/dd7/test__casadi_8cpp.html#ae20d7fba59865a21504b65cdb44cbfe5">f</a>),</div><div class="line"><a name="l00027"></a><span class="lineno">   27</span>&#160;        <a class="code" href="../../d8/dd8/class_hardware_bridge.html#a4407e65acb5e3afc54adee8adeb5627f">_interfaceLCM</a>(<a class="code" href="../../de/df0/utilities_8h.html#aa3945f023f4c554ec5670ac03ff82525">getLcmUrl</a>(255)),</div><div class="line"><a name="l00028"></a><span class="lineno">   28</span>&#160;        <a class="code" href="../../d8/dd8/class_hardware_bridge.html#a21be7448839aeabc1735129b851bfd42">_visualizationLCM</a>(<a class="code" href="../../de/df0/utilities_8h.html#aa3945f023f4c554ec5670ac03ff82525">getLcmUrl</a>(255)) {</div><div class="line"><a name="l00029"></a><span class="lineno">   29</span>&#160;          <a class="code" href="../../d8/dd8/class_hardware_bridge.html#ae259e674ae1cd4f3043fdd0236038617">_robotRunner</a> = </div><div class="line"><a name="l00030"></a><span class="lineno">   30</span>&#160;            <span class="keyword">new</span> <a class="code" href="../../d9/d42/class_robot_runner.html">RobotRunner</a>(robot_ctrl, &amp;<a class="code" href="../../d8/dd8/class_hardware_bridge.html#a0389f737fe143e8a4bbf9433c129d149">taskManager</a>, 0.001<a class="code" href="../../dc/dd7/test__casadi_8cpp.html#ae20d7fba59865a21504b65cdb44cbfe5">f</a>, <span class="stringliteral">&quot;robot-control&quot;</span>);</div><div class="line"><a name="l00031"></a><span class="lineno">   31</span>&#160;    <a class="code" href="../../d8/dd8/class_hardware_bridge.html#ab8487082663e527210d4e1d89387902b">_userControlParameters</a> = robot_ctrl-&gt;<a class="code" href="../../d4/d6a/class_robot_controller.html#a4f978bdc5c1e5c868ca578f1061489e7">getUserControlParameters</a>();</div><div class="line"><a name="l00032"></a><span class="lineno">   32</span>&#160;        }</div><div class="ttc" id="class_hardware_bridge_html_ab8487082663e527210d4e1d89387902b"><div class="ttname"><a href="../../d8/dd8/class_hardware_bridge.html#ab8487082663e527210d4e1d89387902b">HardwareBridge::_userControlParameters</a></div><div class="ttdeci">ControlParameters * _userControlParameters</div><div class="ttdef"><b>Definition:</b> <a href="../../d6/dd5/_hardware_bridge_8h_source.html#l00067">HardwareBridge.h:67</a></div></div>
<div class="ttc" id="class_robot_runner_html"><div class="ttname"><a href="../../d9/d42/class_robot_runner.html">RobotRunner</a></div><div class="ttdef"><b>Definition:</b> <a href="../../d3/d41/_robot_runner_8h_source.html#l00030">RobotRunner.h:30</a></div></div>
<div class="ttc" id="class_hardware_bridge_html_a4407e65acb5e3afc54adee8adeb5627f"><div class="ttname"><a href="../../d8/dd8/class_hardware_bridge.html#a4407e65acb5e3afc54adee8adeb5627f">HardwareBridge::_interfaceLCM</a></div><div class="ttdeci">lcm::LCM _interfaceLCM</div><div class="ttdef"><b>Definition:</b> <a href="../../d6/dd5/_hardware_bridge_8h_source.html#l00055">HardwareBridge.h:55</a></div></div>
<div class="ttc" id="utilities_8h_html_aa3945f023f4c554ec5670ac03ff82525"><div class="ttname"><a href="../../de/df0/utilities_8h.html#aa3945f023f4c554ec5670ac03ff82525">getLcmUrl</a></div><div class="ttdeci">std::string getLcmUrl(s64 ttl)</div><div class="ttdef"><b>Definition:</b> <a href="../../de/da5/utilities_8cpp_source.html#l00032">utilities.cpp:32</a></div></div>
<div class="ttc" id="class_hardware_bridge_html_a21be7448839aeabc1735129b851bfd42"><div class="ttname"><a href="../../d8/dd8/class_hardware_bridge.html#a21be7448839aeabc1735129b851bfd42">HardwareBridge::_visualizationLCM</a></div><div class="ttdeci">lcm::LCM _visualizationLCM</div><div class="ttdef"><b>Definition:</b> <a href="../../d6/dd5/_hardware_bridge_8h_source.html#l00056">HardwareBridge.h:56</a></div></div>
<div class="ttc" id="class_robot_controller_html_a4f978bdc5c1e5c868ca578f1061489e7"><div class="ttname"><a href="../../d4/d6a/class_robot_controller.html#a4f978bdc5c1e5c868ca578f1061489e7">RobotController::getUserControlParameters</a></div><div class="ttdeci">virtual ControlParameters * getUserControlParameters()=0</div></div>
<div class="ttc" id="class_hardware_bridge_html_aa63048fffaaddf1c55a8f18a785396ec"><div class="ttname"><a href="../../d8/dd8/class_hardware_bridge.html#aa63048fffaaddf1c55a8f18a785396ec">HardwareBridge::statusTask</a></div><div class="ttdeci">PrintTaskStatus statusTask</div><div class="ttdef"><b>Definition:</b> <a href="../../d6/dd5/_hardware_bridge_8h_source.html#l00051">HardwareBridge.h:51</a></div></div>
<div class="ttc" id="class_hardware_bridge_html_a0389f737fe143e8a4bbf9433c129d149"><div class="ttname"><a href="../../d8/dd8/class_hardware_bridge.html#a0389f737fe143e8a4bbf9433c129d149">HardwareBridge::taskManager</a></div><div class="ttdeci">PeriodicTaskManager taskManager</div><div class="ttdef"><b>Definition:</b> <a href="../../d6/dd5/_hardware_bridge_8h_source.html#l00050">HardwareBridge.h:50</a></div></div>
<div class="ttc" id="class_hardware_bridge_html_ae259e674ae1cd4f3043fdd0236038617"><div class="ttname"><a href="../../d8/dd8/class_hardware_bridge.html#ae259e674ae1cd4f3043fdd0236038617">HardwareBridge::_robotRunner</a></div><div class="ttdeci">RobotRunner * _robotRunner</div><div class="ttdef"><b>Definition:</b> <a href="../../d6/dd5/_hardware_bridge_8h_source.html#l00062">HardwareBridge.h:62</a></div></div>
<div class="ttc" id="test__casadi_8cpp_html_ae20d7fba59865a21504b65cdb44cbfe5"><div class="ttname"><a href="../../dc/dd7/test__casadi_8cpp.html#ae20d7fba59865a21504b65cdb44cbfe5">f</a></div><div class="ttdeci">MX f(const MX &amp;x, const MX &amp;u)</div><div class="ttdef"><b>Definition:</b> <a href="../../dc/dd7/test__casadi_8cpp_source.html#l00202">test_casadi.cpp:202</a></div></div>
</div><!-- fragment -->
<p><div id="dynsection-2" onclick="return toggleVisibility(this)" class="dynheader closed" style="cursor:pointer;">
  <img id="dynsection-2-trigger" src="../../closed.png" alt="+"/> Here is the call graph for this function:</div>
<div id="dynsection-2-summary" class="dynsummary" style="display:block;">
</div>
<div id="dynsection-2-content" class="dyncontent" style="display:none;">
<div class="center"><img src="../../d8/dd8/class_hardware_bridge_a5de3c6c9f311c568c2ba4468e9b73313_cgraph.png" border="0" usemap="#d8/dd8/class_hardware_bridge_a5de3c6c9f311c568c2ba4468e9b73313_cgraph" alt=""/></div>
<map name="d8/dd8/class_hardware_bridge_a5de3c6c9f311c568c2ba4468e9b73313_cgraph" id="d8/dd8/class_hardware_bridge_a5de3c6c9f311c568c2ba4468e9b73313_cgraph">
</map>
</div>
</p>

</div>
</div>
<a class="anchor" id="a038873f692d1128e00c75f2b897ebdbd"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">HardwareBridge::~HardwareBridge </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Definition at line <a class="el" href="../../d6/dd5/_hardware_bridge_8h_source.html#l00037">37</a> of file <a class="el" href="../../d6/dd5/_hardware_bridge_8h_source.html">HardwareBridge.h</a>.</p>

<p>References <a class="el" href="../../d6/dd5/_hardware_bridge_8h_source.html#l00062">_robotRunner</a>, <a class="el" href="../../d9/da0/_hardware_bridge_8cpp_source.html#l00092">handleControlParameter()</a>, <a class="el" href="../../d9/da0/_hardware_bridge_8cpp_source.html#l00084">handleGamepadLCM()</a>, <a class="el" href="../../d9/da0/_hardware_bridge_8cpp_source.html#l00048">handleInterfaceLCM()</a>, <a class="el" href="../../d9/da0/_hardware_bridge_8cpp_source.html#l00305">publishVisualizationLCM()</a>, and <a class="el" href="../../d9/da0/_hardware_bridge_8cpp_source.html#l00266">run_sbus()</a>.</p>
<div class="fragment"><div class="line"><a name="l00037"></a><span class="lineno">   37</span>&#160;{ <span class="keyword">delete</span> <a class="code" href="../../d8/dd8/class_hardware_bridge.html#ae259e674ae1cd4f3043fdd0236038617">_robotRunner</a>; }</div><div class="ttc" id="class_hardware_bridge_html_ae259e674ae1cd4f3043fdd0236038617"><div class="ttname"><a href="../../d8/dd8/class_hardware_bridge.html#ae259e674ae1cd4f3043fdd0236038617">HardwareBridge::_robotRunner</a></div><div class="ttdeci">RobotRunner * _robotRunner</div><div class="ttdef"><b>Definition:</b> <a href="../../d6/dd5/_hardware_bridge_8h_source.html#l00062">HardwareBridge.h:62</a></div></div>
</div><!-- fragment -->
<p><div id="dynsection-3" onclick="return toggleVisibility(this)" class="dynheader closed" style="cursor:pointer;">
  <img id="dynsection-3-trigger" src="../../closed.png" alt="+"/> Here is the call graph for this function:</div>
<div id="dynsection-3-summary" class="dynsummary" style="display:block;">
</div>
<div id="dynsection-3-content" class="dyncontent" style="display:none;">
<div class="center"><img src="../../d8/dd8/class_hardware_bridge_a038873f692d1128e00c75f2b897ebdbd_cgraph.png" border="0" usemap="#d8/dd8/class_hardware_bridge_a038873f692d1128e00c75f2b897ebdbd_cgraph" alt=""/></div>
<map name="d8/dd8/class_hardware_bridge_a038873f692d1128e00c75f2b897ebdbd_cgraph" id="d8/dd8/class_hardware_bridge_a038873f692d1128e00c75f2b897ebdbd_cgraph">
</map>
</div>
</p>

</div>
</div>
<h2 class="groupheader">Member Function Documentation</h2>
<a class="anchor" id="aa5bd1ccd29e15e2f0ecb5b3f65795784"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void HardwareBridge::handleControlParameter </td>
          <td>(</td>
          <td class="paramtype">const lcm::ReceiveBuffer *&#160;</td>
          <td class="paramname"><em>rbuf</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const std::string &amp;&#160;</td>
          <td class="paramname"><em>chan</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const control_parameter_request_lcmt *&#160;</td>
          <td class="paramname"><em>msg</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Definition at line <a class="el" href="../../d9/da0/_hardware_bridge_8cpp_source.html#l00092">92</a> of file <a class="el" href="../../d9/da0/_hardware_bridge_8cpp_source.html">HardwareBridge.cpp</a>.</p>

<p>References <a class="el" href="../../d6/dd5/_hardware_bridge_8h_source.html#l00055">_interfaceLCM</a>, <a class="el" href="../../d2/d01/_control_parameters_8h_source.html#l00381">ControlParameter::_kind</a>, <a class="el" href="../../d6/dd5/_hardware_bridge_8h_source.html#l00057">_parameter_response_lcmt</a>, <a class="el" href="../../d6/dd5/_hardware_bridge_8h_source.html#l00063">_robotParams</a>, <a class="el" href="../../d6/dd5/_hardware_bridge_8h_source.html#l00067">_userControlParameters</a>, <a class="el" href="../../d2/d01/_control_parameters_8h_source.html#l00441">ControlParameters::collection</a>, <a class="el" href="../../d5/d90/_control_parameters_8cpp_source.html#l00016">controlParameterValueKindToString()</a>, <a class="el" href="../../d5/d90/_control_parameters_8cpp_source.html#l00034">controlParameterValueToString()</a>, <a class="el" href="../../d2/d01/_control_parameters_8h_source.html#l00095">ControlParameterCollection::lookup()</a>, <a class="el" href="../../d2/d01/_control_parameters_8h_source.html#l00252">ControlParameter::set()</a>, <a class="el" href="../../d6/de9/_control_parameter_interface_8h.html#ae6908d6ad8ae0bc7a200141e0c292508a592d3b9333f88bfabfaa2b00fb225ebb">SET_ROBOT_PARAM_BY_NAME</a>, and <a class="el" href="../../d6/de9/_control_parameter_interface_8h.html#ae6908d6ad8ae0bc7a200141e0c292508a7cd01036768fe3a9f7f5cccc148f833e">SET_USER_PARAM_BY_NAME</a>.</p>
<div class="fragment"><div class="line"><a name="l00094"></a><span class="lineno">   94</span>&#160;                                               {</div><div class="line"><a name="l00095"></a><span class="lineno">   95</span>&#160;  (void)rbuf;</div><div class="line"><a name="l00096"></a><span class="lineno">   96</span>&#160;  (void)chan;</div><div class="line"><a name="l00097"></a><span class="lineno">   97</span>&#160;  <span class="keywordflow">if</span> (msg-&gt;requestNumber &lt;= <a class="code" href="../../d8/dd8/class_hardware_bridge.html#a4b91d691aac1ad94f0c600e2ec2e084a">_parameter_response_lcmt</a>.requestNumber) {</div><div class="line"><a name="l00098"></a><span class="lineno">   98</span>&#160;    <span class="comment">// nothing to do!</span></div><div class="line"><a name="l00099"></a><span class="lineno">   99</span>&#160;    printf(</div><div class="line"><a name="l00100"></a><span class="lineno">  100</span>&#160;        <span class="stringliteral">&quot;[HardwareBridge] Warning: the interface has run a ControlParameter &quot;</span></div><div class="line"><a name="l00101"></a><span class="lineno">  101</span>&#160;        <span class="stringliteral">&quot;iteration, but there is no new request!\n&quot;</span>);</div><div class="line"><a name="l00102"></a><span class="lineno">  102</span>&#160;    <span class="comment">// return;</span></div><div class="line"><a name="l00103"></a><span class="lineno">  103</span>&#160;  }</div><div class="line"><a name="l00104"></a><span class="lineno">  104</span>&#160;</div><div class="line"><a name="l00105"></a><span class="lineno">  105</span>&#160;  <span class="comment">// sanity check</span></div><div class="line"><a name="l00106"></a><span class="lineno">  106</span>&#160;  <a class="code" href="../../d0/d99/c_types_8h.html#a350c6fc928e3bdc6c6486268ac8fb269">s64</a> nRequests = msg-&gt;requestNumber - <a class="code" href="../../d8/dd8/class_hardware_bridge.html#a4b91d691aac1ad94f0c600e2ec2e084a">_parameter_response_lcmt</a>.requestNumber;</div><div class="line"><a name="l00107"></a><span class="lineno">  107</span>&#160;  <span class="keywordflow">if</span> (nRequests != 1) {</div><div class="line"><a name="l00108"></a><span class="lineno">  108</span>&#160;    printf(<span class="stringliteral">&quot;[ERROR] Hardware bridge: we&#39;ve missed %ld requests\n&quot;</span>,</div><div class="line"><a name="l00109"></a><span class="lineno">  109</span>&#160;           nRequests - 1);</div><div class="line"><a name="l00110"></a><span class="lineno">  110</span>&#160;  }</div><div class="line"><a name="l00111"></a><span class="lineno">  111</span>&#160;</div><div class="line"><a name="l00112"></a><span class="lineno">  112</span>&#160;  <span class="keywordflow">switch</span> (msg-&gt;requestKind) {</div><div class="line"><a name="l00113"></a><span class="lineno">  113</span>&#160;    <span class="keywordflow">case</span> (<a class="code" href="../../d0/d99/c_types_8h.html#a9e382f207c65ca13ab4ae98363aeda80">s8</a>)<a class="code" href="../../d6/de9/_control_parameter_interface_8h.html#ae6908d6ad8ae0bc7a200141e0c292508a7cd01036768fe3a9f7f5cccc148f833e">ControlParameterRequestKind::SET_USER_PARAM_BY_NAME</a>: {</div><div class="line"><a name="l00114"></a><span class="lineno">  114</span>&#160;      <span class="keywordflow">if</span>(!<a class="code" href="../../d8/dd8/class_hardware_bridge.html#ab8487082663e527210d4e1d89387902b">_userControlParameters</a>) {</div><div class="line"><a name="l00115"></a><span class="lineno">  115</span>&#160;        printf(<span class="stringliteral">&quot;[Warning] Got user param %s, but not using user parameters!\n&quot;</span>,</div><div class="line"><a name="l00116"></a><span class="lineno">  116</span>&#160;               (<span class="keywordtype">char</span>*)msg-&gt;name);</div><div class="line"><a name="l00117"></a><span class="lineno">  117</span>&#160;      } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00118"></a><span class="lineno">  118</span>&#160;        std::string name((<span class="keywordtype">char</span>*)msg-&gt;name);</div><div class="line"><a name="l00119"></a><span class="lineno">  119</span>&#160;        <a class="code" href="../../da/d98/class_control_parameter.html">ControlParameter</a>&amp; param = <a class="code" href="../../d8/dd8/class_hardware_bridge.html#ab8487082663e527210d4e1d89387902b">_userControlParameters</a>-&gt;<a class="code" href="../../d8/d86/class_control_parameters.html#ab42dff0f07e88bf44c831238dd4ce96f">collection</a>.<a class="code" href="../../dd/da1/class_control_parameter_collection.html#a9e6262aa46992ca879b50d70df030a56">lookup</a>(name);</div><div class="line"><a name="l00120"></a><span class="lineno">  120</span>&#160;</div><div class="line"><a name="l00121"></a><span class="lineno">  121</span>&#160;        <span class="comment">// type check</span></div><div class="line"><a name="l00122"></a><span class="lineno">  122</span>&#160;        <span class="keywordflow">if</span> ((<a class="code" href="../../d0/d99/c_types_8h.html#a9e382f207c65ca13ab4ae98363aeda80">s8</a>)param.<a class="code" href="../../da/d98/class_control_parameter.html#a9bfcef0e53e248af51d60e013609ce8f">_kind</a> != msg-&gt;parameterKind) {</div><div class="line"><a name="l00123"></a><span class="lineno">  123</span>&#160;          <span class="keywordflow">throw</span> std::runtime_error(</div><div class="line"><a name="l00124"></a><span class="lineno">  124</span>&#160;              <span class="stringliteral">&quot;type mismatch for parameter &quot;</span> + name + <span class="stringliteral">&quot;, robot thinks it is &quot;</span> +</div><div class="line"><a name="l00125"></a><span class="lineno">  125</span>&#160;              <a class="code" href="../../d2/d01/_control_parameters_8h.html#a39a31ac35492a7e98110f7301430b5fe">controlParameterValueKindToString</a>(param.<a class="code" href="../../da/d98/class_control_parameter.html#a9bfcef0e53e248af51d60e013609ce8f">_kind</a>) +</div><div class="line"><a name="l00126"></a><span class="lineno">  126</span>&#160;              <span class="stringliteral">&quot; but received a command to set it to &quot;</span> +</div><div class="line"><a name="l00127"></a><span class="lineno">  127</span>&#160;              <a class="code" href="../../d2/d01/_control_parameters_8h.html#a39a31ac35492a7e98110f7301430b5fe">controlParameterValueKindToString</a>(</div><div class="line"><a name="l00128"></a><span class="lineno">  128</span>&#160;                  (<a class="code" href="../../d2/d01/_control_parameters_8h.html#a09b572cf97f12b378290dee549d8ecc3">ControlParameterValueKind</a>)msg-&gt;parameterKind));</div><div class="line"><a name="l00129"></a><span class="lineno">  129</span>&#160;        }</div><div class="line"><a name="l00130"></a><span class="lineno">  130</span>&#160;</div><div class="line"><a name="l00131"></a><span class="lineno">  131</span>&#160;        <span class="comment">// do the actual set</span></div><div class="line"><a name="l00132"></a><span class="lineno">  132</span>&#160;        <a class="code" href="../../df/df2/union_control_parameter_value.html">ControlParameterValue</a> v;</div><div class="line"><a name="l00133"></a><span class="lineno">  133</span>&#160;        memcpy(&amp;v, msg-&gt;value, <span class="keyword">sizeof</span>(v));</div><div class="line"><a name="l00134"></a><span class="lineno">  134</span>&#160;        param.<a class="code" href="../../da/d98/class_control_parameter.html#ac508d1f24bf918c65d717f5389553e83">set</a>(v, (<a class="code" href="../../d2/d01/_control_parameters_8h.html#a09b572cf97f12b378290dee549d8ecc3">ControlParameterValueKind</a>)msg-&gt;parameterKind);</div><div class="line"><a name="l00135"></a><span class="lineno">  135</span>&#160;</div><div class="line"><a name="l00136"></a><span class="lineno">  136</span>&#160;        <span class="comment">// respond:</span></div><div class="line"><a name="l00137"></a><span class="lineno">  137</span>&#160;        <a class="code" href="../../d8/dd8/class_hardware_bridge.html#a4b91d691aac1ad94f0c600e2ec2e084a">_parameter_response_lcmt</a>.requestNumber =</div><div class="line"><a name="l00138"></a><span class="lineno">  138</span>&#160;            msg-&gt;requestNumber;  <span class="comment">// acknowledge that the set has happened</span></div><div class="line"><a name="l00139"></a><span class="lineno">  139</span>&#160;        <a class="code" href="../../d8/dd8/class_hardware_bridge.html#a4b91d691aac1ad94f0c600e2ec2e084a">_parameter_response_lcmt</a>.parameterKind =</div><div class="line"><a name="l00140"></a><span class="lineno">  140</span>&#160;            msg-&gt;parameterKind;  <span class="comment">// just for debugging print statements</span></div><div class="line"><a name="l00141"></a><span class="lineno">  141</span>&#160;        memcpy(<a class="code" href="../../d8/dd8/class_hardware_bridge.html#a4b91d691aac1ad94f0c600e2ec2e084a">_parameter_response_lcmt</a>.value, msg-&gt;value, 64);</div><div class="line"><a name="l00142"></a><span class="lineno">  142</span>&#160;        <span class="comment">//_parameter_response_lcmt.value = _parameter_request_lcmt.value; // just</span></div><div class="line"><a name="l00143"></a><span class="lineno">  143</span>&#160;        <span class="comment">//for debugging print statements</span></div><div class="line"><a name="l00144"></a><span class="lineno">  144</span>&#160;        strcpy((<span class="keywordtype">char</span>*)<a class="code" href="../../d8/dd8/class_hardware_bridge.html#a4b91d691aac1ad94f0c600e2ec2e084a">_parameter_response_lcmt</a>.name,</div><div class="line"><a name="l00145"></a><span class="lineno">  145</span>&#160;               name.c_str());  <span class="comment">// just for debugging print statements</span></div><div class="line"><a name="l00146"></a><span class="lineno">  146</span>&#160;        <a class="code" href="../../d8/dd8/class_hardware_bridge.html#a4b91d691aac1ad94f0c600e2ec2e084a">_parameter_response_lcmt</a>.requestKind = msg-&gt;requestKind;</div><div class="line"><a name="l00147"></a><span class="lineno">  147</span>&#160;</div><div class="line"><a name="l00148"></a><span class="lineno">  148</span>&#160;        printf(<span class="stringliteral">&quot;[User Control Parameter] set %s to %s\n&quot;</span>, name.c_str(),</div><div class="line"><a name="l00149"></a><span class="lineno">  149</span>&#160;               <a class="code" href="../../d2/d01/_control_parameters_8h.html#a845e4adacbcbd157527c891bb3fa4b74">controlParameterValueToString</a>(</div><div class="line"><a name="l00150"></a><span class="lineno">  150</span>&#160;                   v, (<a class="code" href="../../d2/d01/_control_parameters_8h.html#a09b572cf97f12b378290dee549d8ecc3">ControlParameterValueKind</a>)msg-&gt;parameterKind)</div><div class="line"><a name="l00151"></a><span class="lineno">  151</span>&#160;                   .c_str());</div><div class="line"><a name="l00152"></a><span class="lineno">  152</span>&#160;      }</div><div class="line"><a name="l00153"></a><span class="lineno">  153</span>&#160;    } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00154"></a><span class="lineno">  154</span>&#160;</div><div class="line"><a name="l00155"></a><span class="lineno">  155</span>&#160;    <span class="keywordflow">case</span> (<a class="code" href="../../d0/d99/c_types_8h.html#a9e382f207c65ca13ab4ae98363aeda80">s8</a>)<a class="code" href="../../d6/de9/_control_parameter_interface_8h.html#ae6908d6ad8ae0bc7a200141e0c292508a592d3b9333f88bfabfaa2b00fb225ebb">ControlParameterRequestKind::SET_ROBOT_PARAM_BY_NAME</a>: {</div><div class="line"><a name="l00156"></a><span class="lineno">  156</span>&#160;      std::string name((<span class="keywordtype">char</span>*)msg-&gt;name);</div><div class="line"><a name="l00157"></a><span class="lineno">  157</span>&#160;      <a class="code" href="../../da/d98/class_control_parameter.html">ControlParameter</a>&amp; param = <a class="code" href="../../d8/dd8/class_hardware_bridge.html#ad52a70b35d6c19a736ea3287d974c66d">_robotParams</a>.<a class="code" href="../../d8/d86/class_control_parameters.html#ab42dff0f07e88bf44c831238dd4ce96f">collection</a>.<a class="code" href="../../dd/da1/class_control_parameter_collection.html#a9e6262aa46992ca879b50d70df030a56">lookup</a>(name);</div><div class="line"><a name="l00158"></a><span class="lineno">  158</span>&#160;</div><div class="line"><a name="l00159"></a><span class="lineno">  159</span>&#160;      <span class="comment">// type check</span></div><div class="line"><a name="l00160"></a><span class="lineno">  160</span>&#160;      <span class="keywordflow">if</span> ((<a class="code" href="../../d0/d99/c_types_8h.html#a9e382f207c65ca13ab4ae98363aeda80">s8</a>)param.<a class="code" href="../../da/d98/class_control_parameter.html#a9bfcef0e53e248af51d60e013609ce8f">_kind</a> != msg-&gt;parameterKind) {</div><div class="line"><a name="l00161"></a><span class="lineno">  161</span>&#160;        <span class="keywordflow">throw</span> std::runtime_error(</div><div class="line"><a name="l00162"></a><span class="lineno">  162</span>&#160;            <span class="stringliteral">&quot;type mismatch for parameter &quot;</span> + name + <span class="stringliteral">&quot;, robot thinks it is &quot;</span> +</div><div class="line"><a name="l00163"></a><span class="lineno">  163</span>&#160;            <a class="code" href="../../d2/d01/_control_parameters_8h.html#a39a31ac35492a7e98110f7301430b5fe">controlParameterValueKindToString</a>(param.<a class="code" href="../../da/d98/class_control_parameter.html#a9bfcef0e53e248af51d60e013609ce8f">_kind</a>) +</div><div class="line"><a name="l00164"></a><span class="lineno">  164</span>&#160;            <span class="stringliteral">&quot; but received a command to set it to &quot;</span> +</div><div class="line"><a name="l00165"></a><span class="lineno">  165</span>&#160;            <a class="code" href="../../d2/d01/_control_parameters_8h.html#a39a31ac35492a7e98110f7301430b5fe">controlParameterValueKindToString</a>(</div><div class="line"><a name="l00166"></a><span class="lineno">  166</span>&#160;                (<a class="code" href="../../d2/d01/_control_parameters_8h.html#a09b572cf97f12b378290dee549d8ecc3">ControlParameterValueKind</a>)msg-&gt;parameterKind));</div><div class="line"><a name="l00167"></a><span class="lineno">  167</span>&#160;      }</div><div class="line"><a name="l00168"></a><span class="lineno">  168</span>&#160;</div><div class="line"><a name="l00169"></a><span class="lineno">  169</span>&#160;      <span class="comment">// do the actual set</span></div><div class="line"><a name="l00170"></a><span class="lineno">  170</span>&#160;      <a class="code" href="../../df/df2/union_control_parameter_value.html">ControlParameterValue</a> v;</div><div class="line"><a name="l00171"></a><span class="lineno">  171</span>&#160;      memcpy(&amp;v, msg-&gt;value, <span class="keyword">sizeof</span>(v));</div><div class="line"><a name="l00172"></a><span class="lineno">  172</span>&#160;      param.<a class="code" href="../../da/d98/class_control_parameter.html#ac508d1f24bf918c65d717f5389553e83">set</a>(v, (<a class="code" href="../../d2/d01/_control_parameters_8h.html#a09b572cf97f12b378290dee549d8ecc3">ControlParameterValueKind</a>)msg-&gt;parameterKind);</div><div class="line"><a name="l00173"></a><span class="lineno">  173</span>&#160;</div><div class="line"><a name="l00174"></a><span class="lineno">  174</span>&#160;      <span class="comment">// respond:</span></div><div class="line"><a name="l00175"></a><span class="lineno">  175</span>&#160;      <a class="code" href="../../d8/dd8/class_hardware_bridge.html#a4b91d691aac1ad94f0c600e2ec2e084a">_parameter_response_lcmt</a>.requestNumber =</div><div class="line"><a name="l00176"></a><span class="lineno">  176</span>&#160;          msg-&gt;requestNumber;  <span class="comment">// acknowledge that the set has happened</span></div><div class="line"><a name="l00177"></a><span class="lineno">  177</span>&#160;      <a class="code" href="../../d8/dd8/class_hardware_bridge.html#a4b91d691aac1ad94f0c600e2ec2e084a">_parameter_response_lcmt</a>.parameterKind =</div><div class="line"><a name="l00178"></a><span class="lineno">  178</span>&#160;          msg-&gt;parameterKind;  <span class="comment">// just for debugging print statements</span></div><div class="line"><a name="l00179"></a><span class="lineno">  179</span>&#160;      memcpy(<a class="code" href="../../d8/dd8/class_hardware_bridge.html#a4b91d691aac1ad94f0c600e2ec2e084a">_parameter_response_lcmt</a>.value, msg-&gt;value, 64);</div><div class="line"><a name="l00180"></a><span class="lineno">  180</span>&#160;      <span class="comment">//_parameter_response_lcmt.value = _parameter_request_lcmt.value; // just</span></div><div class="line"><a name="l00181"></a><span class="lineno">  181</span>&#160;      <span class="comment">//for debugging print statements</span></div><div class="line"><a name="l00182"></a><span class="lineno">  182</span>&#160;      strcpy((<span class="keywordtype">char</span>*)<a class="code" href="../../d8/dd8/class_hardware_bridge.html#a4b91d691aac1ad94f0c600e2ec2e084a">_parameter_response_lcmt</a>.name,</div><div class="line"><a name="l00183"></a><span class="lineno">  183</span>&#160;             name.c_str());  <span class="comment">// just for debugging print statements</span></div><div class="line"><a name="l00184"></a><span class="lineno">  184</span>&#160;      <a class="code" href="../../d8/dd8/class_hardware_bridge.html#a4b91d691aac1ad94f0c600e2ec2e084a">_parameter_response_lcmt</a>.requestKind = msg-&gt;requestKind;</div><div class="line"><a name="l00185"></a><span class="lineno">  185</span>&#160;</div><div class="line"><a name="l00186"></a><span class="lineno">  186</span>&#160;      printf(<span class="stringliteral">&quot;[Robot Control Parameter] set %s to %s\n&quot;</span>, name.c_str(),</div><div class="line"><a name="l00187"></a><span class="lineno">  187</span>&#160;             <a class="code" href="../../d2/d01/_control_parameters_8h.html#a845e4adacbcbd157527c891bb3fa4b74">controlParameterValueToString</a>(</div><div class="line"><a name="l00188"></a><span class="lineno">  188</span>&#160;                 v, (<a class="code" href="../../d2/d01/_control_parameters_8h.html#a09b572cf97f12b378290dee549d8ecc3">ControlParameterValueKind</a>)msg-&gt;parameterKind)</div><div class="line"><a name="l00189"></a><span class="lineno">  189</span>&#160;                 .c_str());</div><div class="line"><a name="l00190"></a><span class="lineno">  190</span>&#160;</div><div class="line"><a name="l00191"></a><span class="lineno">  191</span>&#160;    } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00192"></a><span class="lineno">  192</span>&#160;</div><div class="line"><a name="l00193"></a><span class="lineno">  193</span>&#160;    <span class="keywordflow">default</span>: {</div><div class="line"><a name="l00194"></a><span class="lineno">  194</span>&#160;      <span class="keywordflow">throw</span> std::runtime_error(<span class="stringliteral">&quot;parameter type unsupported&quot;</span>);</div><div class="line"><a name="l00195"></a><span class="lineno">  195</span>&#160;    }</div><div class="line"><a name="l00196"></a><span class="lineno">  196</span>&#160;    <span class="keywordflow">break</span>;</div><div class="line"><a name="l00197"></a><span class="lineno">  197</span>&#160;  }</div><div class="line"><a name="l00198"></a><span class="lineno">  198</span>&#160;  <a class="code" href="../../d8/dd8/class_hardware_bridge.html#a4407e65acb5e3afc54adee8adeb5627f">_interfaceLCM</a>.publish(<span class="stringliteral">&quot;interface_response&quot;</span>, &amp;<a class="code" href="../../d8/dd8/class_hardware_bridge.html#a4b91d691aac1ad94f0c600e2ec2e084a">_parameter_response_lcmt</a>);</div><div class="line"><a name="l00199"></a><span class="lineno">  199</span>&#160;}</div><div class="ttc" id="_control_parameter_interface_8h_html_ae6908d6ad8ae0bc7a200141e0c292508a592d3b9333f88bfabfaa2b00fb225ebb"><div class="ttname"><a href="../../d6/de9/_control_parameter_interface_8h.html#ae6908d6ad8ae0bc7a200141e0c292508a592d3b9333f88bfabfaa2b00fb225ebb">ControlParameterRequestKind::SET_ROBOT_PARAM_BY_NAME</a></div></div>
<div class="ttc" id="class_hardware_bridge_html_a4b91d691aac1ad94f0c600e2ec2e084a"><div class="ttname"><a href="../../d8/dd8/class_hardware_bridge.html#a4b91d691aac1ad94f0c600e2ec2e084a">HardwareBridge::_parameter_response_lcmt</a></div><div class="ttdeci">control_parameter_respones_lcmt _parameter_response_lcmt</div><div class="ttdef"><b>Definition:</b> <a href="../../d6/dd5/_hardware_bridge_8h_source.html#l00057">HardwareBridge.h:57</a></div></div>
<div class="ttc" id="class_control_parameters_html_ab42dff0f07e88bf44c831238dd4ce96f"><div class="ttname"><a href="../../d8/d86/class_control_parameters.html#ab42dff0f07e88bf44c831238dd4ce96f">ControlParameters::collection</a></div><div class="ttdeci">ControlParameterCollection collection</div><div class="ttdef"><b>Definition:</b> <a href="../../d2/d01/_control_parameters_8h_source.html#l00441">ControlParameters.h:441</a></div></div>
<div class="ttc" id="class_control_parameter_html_a9bfcef0e53e248af51d60e013609ce8f"><div class="ttname"><a href="../../da/d98/class_control_parameter.html#a9bfcef0e53e248af51d60e013609ce8f">ControlParameter::_kind</a></div><div class="ttdeci">ControlParameterValueKind _kind</div><div class="ttdef"><b>Definition:</b> <a href="../../d2/d01/_control_parameters_8h_source.html#l00381">ControlParameters.h:381</a></div></div>
<div class="ttc" id="class_hardware_bridge_html_ab8487082663e527210d4e1d89387902b"><div class="ttname"><a href="../../d8/dd8/class_hardware_bridge.html#ab8487082663e527210d4e1d89387902b">HardwareBridge::_userControlParameters</a></div><div class="ttdeci">ControlParameters * _userControlParameters</div><div class="ttdef"><b>Definition:</b> <a href="../../d6/dd5/_hardware_bridge_8h_source.html#l00067">HardwareBridge.h:67</a></div></div>
<div class="ttc" id="_control_parameters_8h_html_a09b572cf97f12b378290dee549d8ecc3"><div class="ttname"><a href="../../d2/d01/_control_parameters_8h.html#a09b572cf97f12b378290dee549d8ecc3">ControlParameterValueKind</a></div><div class="ttdeci">ControlParameterValueKind</div><div class="ttdef"><b>Definition:</b> <a href="../../d2/d01/_control_parameters_8h_source.html#l00034">ControlParameters.h:34</a></div></div>
<div class="ttc" id="_control_parameters_8h_html_a39a31ac35492a7e98110f7301430b5fe"><div class="ttname"><a href="../../d2/d01/_control_parameters_8h.html#a39a31ac35492a7e98110f7301430b5fe">controlParameterValueKindToString</a></div><div class="ttdeci">std::string controlParameterValueKindToString(ControlParameterValueKind valueKind)</div><div class="ttdef"><b>Definition:</b> <a href="../../d5/d90/_control_parameters_8cpp_source.html#l00016">ControlParameters.cpp:16</a></div></div>
<div class="ttc" id="class_control_parameter_html"><div class="ttname"><a href="../../da/d98/class_control_parameter.html">ControlParameter</a></div><div class="ttdef"><b>Definition:</b> <a href="../../d2/d01/_control_parameters_8h_source.html#l00120">ControlParameters.h:120</a></div></div>
<div class="ttc" id="class_hardware_bridge_html_a4407e65acb5e3afc54adee8adeb5627f"><div class="ttname"><a href="../../d8/dd8/class_hardware_bridge.html#a4407e65acb5e3afc54adee8adeb5627f">HardwareBridge::_interfaceLCM</a></div><div class="ttdeci">lcm::LCM _interfaceLCM</div><div class="ttdef"><b>Definition:</b> <a href="../../d6/dd5/_hardware_bridge_8h_source.html#l00055">HardwareBridge.h:55</a></div></div>
<div class="ttc" id="_control_parameter_interface_8h_html_ae6908d6ad8ae0bc7a200141e0c292508a7cd01036768fe3a9f7f5cccc148f833e"><div class="ttname"><a href="../../d6/de9/_control_parameter_interface_8h.html#ae6908d6ad8ae0bc7a200141e0c292508a7cd01036768fe3a9f7f5cccc148f833e">ControlParameterRequestKind::SET_USER_PARAM_BY_NAME</a></div></div>
<div class="ttc" id="union_control_parameter_value_html"><div class="ttname"><a href="../../df/df2/union_control_parameter_value.html">ControlParameterValue</a></div><div class="ttdef"><b>Definition:</b> <a href="../../d2/d01/_control_parameters_8h_source.html#l00055">ControlParameters.h:55</a></div></div>
<div class="ttc" id="c_types_8h_html_a350c6fc928e3bdc6c6486268ac8fb269"><div class="ttname"><a href="../../d0/d99/c_types_8h.html#a350c6fc928e3bdc6c6486268ac8fb269">s64</a></div><div class="ttdeci">int64_t s64</div><div class="ttdef"><b>Definition:</b> <a href="../../d0/d99/c_types_8h_source.html#l00024">cTypes.h:24</a></div></div>
<div class="ttc" id="class_control_parameter_html_ac508d1f24bf918c65d717f5389553e83"><div class="ttname"><a href="../../da/d98/class_control_parameter.html#ac508d1f24bf918c65d717f5389553e83">ControlParameter::set</a></div><div class="ttdeci">void set(ControlParameterValue value, ControlParameterValueKind kind)</div><div class="ttdef"><b>Definition:</b> <a href="../../d2/d01/_control_parameters_8h_source.html#l00252">ControlParameters.h:252</a></div></div>
<div class="ttc" id="c_types_8h_html_a9e382f207c65ca13ab4ae98363aeda80"><div class="ttname"><a href="../../d0/d99/c_types_8h.html#a9e382f207c65ca13ab4ae98363aeda80">s8</a></div><div class="ttdeci">int8_t s8</div><div class="ttdef"><b>Definition:</b> <a href="../../d0/d99/c_types_8h_source.html#l00021">cTypes.h:21</a></div></div>
<div class="ttc" id="class_control_parameter_collection_html_a9e6262aa46992ca879b50d70df030a56"><div class="ttname"><a href="../../dd/da1/class_control_parameter_collection.html#a9e6262aa46992ca879b50d70df030a56">ControlParameterCollection::lookup</a></div><div class="ttdeci">ControlParameter &amp; lookup(const std::string &amp;name)</div><div class="ttdef"><b>Definition:</b> <a href="../../d2/d01/_control_parameters_8h_source.html#l00095">ControlParameters.h:95</a></div></div>
<div class="ttc" id="_control_parameters_8h_html_a845e4adacbcbd157527c891bb3fa4b74"><div class="ttname"><a href="../../d2/d01/_control_parameters_8h.html#a845e4adacbcbd157527c891bb3fa4b74">controlParameterValueToString</a></div><div class="ttdeci">std::string controlParameterValueToString(ControlParameterValue v, ControlParameterValueKind kind)</div><div class="ttdef"><b>Definition:</b> <a href="../../d5/d90/_control_parameters_8cpp_source.html#l00034">ControlParameters.cpp:34</a></div></div>
<div class="ttc" id="class_hardware_bridge_html_ad52a70b35d6c19a736ea3287d974c66d"><div class="ttname"><a href="../../d8/dd8/class_hardware_bridge.html#ad52a70b35d6c19a736ea3287d974c66d">HardwareBridge::_robotParams</a></div><div class="ttdeci">RobotControlParameters _robotParams</div><div class="ttdef"><b>Definition:</b> <a href="../../d6/dd5/_hardware_bridge_8h_source.html#l00063">HardwareBridge.h:63</a></div></div>
</div><!-- fragment -->
<p><div id="dynsection-4" onclick="return toggleVisibility(this)" class="dynheader closed" style="cursor:pointer;">
  <img id="dynsection-4-trigger" src="../../closed.png" alt="+"/> Here is the call graph for this function:</div>
<div id="dynsection-4-summary" class="dynsummary" style="display:block;">
</div>
<div id="dynsection-4-content" class="dyncontent" style="display:none;">
<div class="center"><img src="../../d8/dd8/class_hardware_bridge_aa5bd1ccd29e15e2f0ecb5b3f65795784_cgraph.png" border="0" usemap="#d8/dd8/class_hardware_bridge_aa5bd1ccd29e15e2f0ecb5b3f65795784_cgraph" alt=""/></div>
<map name="d8/dd8/class_hardware_bridge_aa5bd1ccd29e15e2f0ecb5b3f65795784_cgraph" id="d8/dd8/class_hardware_bridge_aa5bd1ccd29e15e2f0ecb5b3f65795784_cgraph">
</map>
</div>
</p>

<p><div id="dynsection-5" onclick="return toggleVisibility(this)" class="dynheader closed" style="cursor:pointer;">
  <img id="dynsection-5-trigger" src="../../closed.png" alt="+"/> Here is the caller graph for this function:</div>
<div id="dynsection-5-summary" class="dynsummary" style="display:block;">
</div>
<div id="dynsection-5-content" class="dyncontent" style="display:none;">
<div class="center"><img src="../../d8/dd8/class_hardware_bridge_aa5bd1ccd29e15e2f0ecb5b3f65795784_icgraph.png" border="0" usemap="#d8/dd8/class_hardware_bridge_aa5bd1ccd29e15e2f0ecb5b3f65795784_icgraph" alt=""/></div>
<map name="d8/dd8/class_hardware_bridge_aa5bd1ccd29e15e2f0ecb5b3f65795784_icgraph" id="d8/dd8/class_hardware_bridge_aa5bd1ccd29e15e2f0ecb5b3f65795784_icgraph">
</map>
</div>
</p>

</div>
</div>
<a class="anchor" id="ae6905c9dcc7d67badb4bcd79ef6f62a1"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void HardwareBridge::handleGamepadLCM </td>
          <td>(</td>
          <td class="paramtype">const lcm::ReceiveBuffer *&#160;</td>
          <td class="paramname"><em>rbuf</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const std::string &amp;&#160;</td>
          <td class="paramname"><em>chan</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const gamepad_lcmt *&#160;</td>
          <td class="paramname"><em>msg</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Definition at line <a class="el" href="../../d9/da0/_hardware_bridge_8cpp_source.html#l00084">84</a> of file <a class="el" href="../../d9/da0/_hardware_bridge_8cpp_source.html">HardwareBridge.cpp</a>.</p>

<p>References <a class="el" href="../../d6/dd5/_hardware_bridge_8h_source.html#l00052">_gamepadCommand</a>, and <a class="el" href="../../d7/d24/_gamepad_command_8h_source.html#l00041">GamepadCommand::set()</a>.</p>
<div class="fragment"><div class="line"><a name="l00086"></a><span class="lineno">   86</span>&#160;                                                               {</div><div class="line"><a name="l00087"></a><span class="lineno">   87</span>&#160;  (void)rbuf;</div><div class="line"><a name="l00088"></a><span class="lineno">   88</span>&#160;  (void)chan;</div><div class="line"><a name="l00089"></a><span class="lineno">   89</span>&#160;  <a class="code" href="../../d8/dd8/class_hardware_bridge.html#a0928b007abfd50e0edc7d38de4bce932">_gamepadCommand</a>.<a class="code" href="../../d4/d51/struct_gamepad_command.html#ae4c2dcd871479b0a41b942736a2698a3">set</a>(msg);</div><div class="line"><a name="l00090"></a><span class="lineno">   90</span>&#160;}</div><div class="ttc" id="class_hardware_bridge_html_a0928b007abfd50e0edc7d38de4bce932"><div class="ttname"><a href="../../d8/dd8/class_hardware_bridge.html#a0928b007abfd50e0edc7d38de4bce932">HardwareBridge::_gamepadCommand</a></div><div class="ttdeci">GamepadCommand _gamepadCommand</div><div class="ttdef"><b>Definition:</b> <a href="../../d6/dd5/_hardware_bridge_8h_source.html#l00052">HardwareBridge.h:52</a></div></div>
<div class="ttc" id="struct_gamepad_command_html_ae4c2dcd871479b0a41b942736a2698a3"><div class="ttname"><a href="../../d4/d51/struct_gamepad_command.html#ae4c2dcd871479b0a41b942736a2698a3">GamepadCommand::set</a></div><div class="ttdeci">void set(const gamepad_lcmt *lcmt)</div><div class="ttdef"><b>Definition:</b> <a href="../../d7/d24/_gamepad_command_8h_source.html#l00041">GamepadCommand.h:41</a></div></div>
</div><!-- fragment -->
<p><div id="dynsection-6" onclick="return toggleVisibility(this)" class="dynheader closed" style="cursor:pointer;">
  <img id="dynsection-6-trigger" src="../../closed.png" alt="+"/> Here is the call graph for this function:</div>
<div id="dynsection-6-summary" class="dynsummary" style="display:block;">
</div>
<div id="dynsection-6-content" class="dyncontent" style="display:none;">
<div class="center"><img src="../../d8/dd8/class_hardware_bridge_ae6905c9dcc7d67badb4bcd79ef6f62a1_cgraph.png" border="0" usemap="#d8/dd8/class_hardware_bridge_ae6905c9dcc7d67badb4bcd79ef6f62a1_cgraph" alt=""/></div>
<map name="d8/dd8/class_hardware_bridge_ae6905c9dcc7d67badb4bcd79ef6f62a1_cgraph" id="d8/dd8/class_hardware_bridge_ae6905c9dcc7d67badb4bcd79ef6f62a1_cgraph">
</map>
</div>
</p>

<p><div id="dynsection-7" onclick="return toggleVisibility(this)" class="dynheader closed" style="cursor:pointer;">
  <img id="dynsection-7-trigger" src="../../closed.png" alt="+"/> Here is the caller graph for this function:</div>
<div id="dynsection-7-summary" class="dynsummary" style="display:block;">
</div>
<div id="dynsection-7-content" class="dyncontent" style="display:none;">
<div class="center"><img src="../../d8/dd8/class_hardware_bridge_ae6905c9dcc7d67badb4bcd79ef6f62a1_icgraph.png" border="0" usemap="#d8/dd8/class_hardware_bridge_ae6905c9dcc7d67badb4bcd79ef6f62a1_icgraph" alt=""/></div>
<map name="d8/dd8/class_hardware_bridge_ae6905c9dcc7d67badb4bcd79ef6f62a1_icgraph" id="d8/dd8/class_hardware_bridge_ae6905c9dcc7d67badb4bcd79ef6f62a1_icgraph">
</map>
</div>
</p>

</div>
</div>
<a class="anchor" id="aa6d23f7fccce82cb3a351dd48c4433be"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void HardwareBridge::handleInterfaceLCM </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Definition at line <a class="el" href="../../d9/da0/_hardware_bridge_8cpp_source.html#l00048">48</a> of file <a class="el" href="../../d9/da0/_hardware_bridge_8cpp_source.html">HardwareBridge.cpp</a>.</p>

<p>References <a class="el" href="../../d6/dd5/_hardware_bridge_8h_source.html#l00055">_interfaceLCM</a>, and <a class="el" href="../../d6/dd5/_hardware_bridge_8h_source.html#l00066">_interfaceLcmQuit</a>.</p>
<div class="fragment"><div class="line"><a name="l00048"></a><span class="lineno">   48</span>&#160;                                        {</div><div class="line"><a name="l00049"></a><span class="lineno">   49</span>&#160;  <span class="keywordflow">while</span> (!<a class="code" href="../../d8/dd8/class_hardware_bridge.html#aa78e0f3c26667723c9501963aafa9173">_interfaceLcmQuit</a>) <a class="code" href="../../d8/dd8/class_hardware_bridge.html#a4407e65acb5e3afc54adee8adeb5627f">_interfaceLCM</a>.handle();</div><div class="line"><a name="l00050"></a><span class="lineno">   50</span>&#160;}</div><div class="ttc" id="class_hardware_bridge_html_aa78e0f3c26667723c9501963aafa9173"><div class="ttname"><a href="../../d8/dd8/class_hardware_bridge.html#aa78e0f3c26667723c9501963aafa9173">HardwareBridge::_interfaceLcmQuit</a></div><div class="ttdeci">volatile bool _interfaceLcmQuit</div><div class="ttdef"><b>Definition:</b> <a href="../../d6/dd5/_hardware_bridge_8h_source.html#l00066">HardwareBridge.h:66</a></div></div>
<div class="ttc" id="class_hardware_bridge_html_a4407e65acb5e3afc54adee8adeb5627f"><div class="ttname"><a href="../../d8/dd8/class_hardware_bridge.html#a4407e65acb5e3afc54adee8adeb5627f">HardwareBridge::_interfaceLCM</a></div><div class="ttdeci">lcm::LCM _interfaceLCM</div><div class="ttdef"><b>Definition:</b> <a href="../../d6/dd5/_hardware_bridge_8h_source.html#l00055">HardwareBridge.h:55</a></div></div>
</div><!-- fragment -->
<p><div id="dynsection-8" onclick="return toggleVisibility(this)" class="dynheader closed" style="cursor:pointer;">
  <img id="dynsection-8-trigger" src="../../closed.png" alt="+"/> Here is the caller graph for this function:</div>
<div id="dynsection-8-summary" class="dynsummary" style="display:block;">
</div>
<div id="dynsection-8-content" class="dyncontent" style="display:none;">
<div class="center"><img src="../../d8/dd8/class_hardware_bridge_aa6d23f7fccce82cb3a351dd48c4433be_icgraph.png" border="0" usemap="#d8/dd8/class_hardware_bridge_aa6d23f7fccce82cb3a351dd48c4433be_icgraph" alt=""/></div>
<map name="d8/dd8/class_hardware_bridge_aa6d23f7fccce82cb3a351dd48c4433be_icgraph" id="d8/dd8/class_hardware_bridge_aa6d23f7fccce82cb3a351dd48c4433be_icgraph">
</map>
</div>
</p>

</div>
</div>
<a class="anchor" id="a4a8078bc3b30d7260281598990243262"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void HardwareBridge::initCommon </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">
<p>All initialization code that is common between Cheetah 3 and Mini Cheetah </p>

<p>Definition at line <a class="el" href="../../d9/da0/_hardware_bridge_8cpp_source.html#l00030">30</a> of file <a class="el" href="../../d9/da0/_hardware_bridge_8cpp_source.html">HardwareBridge.cpp</a>.</p>

<p>References <a class="el" href="../../d6/dd5/_hardware_bridge_8h_source.html#l00055">_interfaceLCM</a>, <a class="el" href="../../d6/dd5/_hardware_bridge_8h_source.html#l00065">_interfaceLcmThread</a>, <a class="el" href="../../d9/da0/_hardware_bridge_8cpp_source.html#l00092">handleControlParameter()</a>, <a class="el" href="../../d9/da0/_hardware_bridge_8cpp_source.html#l00084">handleGamepadLCM()</a>, <a class="el" href="../../d9/da0/_hardware_bridge_8cpp_source.html#l00048">handleInterfaceLCM()</a>, <a class="el" href="../../d9/da0/_hardware_bridge_8cpp_source.html#l00017">initError()</a>, <a class="el" href="../../d9/da0/_hardware_bridge_8cpp_source.html#l00060">prefaultStack()</a>, and <a class="el" href="../../d9/da0/_hardware_bridge_8cpp_source.html#l00075">setupScheduler()</a>.</p>
<div class="fragment"><div class="line"><a name="l00030"></a><span class="lineno">   30</span>&#160;                                {</div><div class="line"><a name="l00031"></a><span class="lineno">   31</span>&#160;  printf(<span class="stringliteral">&quot;[HardwareBridge] Init stack\n&quot;</span>);</div><div class="line"><a name="l00032"></a><span class="lineno">   32</span>&#160;  <a class="code" href="../../d8/dd8/class_hardware_bridge.html#abbe4b85c2153d1c4f9718b678587cc7b">prefaultStack</a>();</div><div class="line"><a name="l00033"></a><span class="lineno">   33</span>&#160;  printf(<span class="stringliteral">&quot;[HardwareBridge] Init scheduler\n&quot;</span>);</div><div class="line"><a name="l00034"></a><span class="lineno">   34</span>&#160;  <a class="code" href="../../d8/dd8/class_hardware_bridge.html#a6b4e33274b7f6f1a78987d9b5480f9b5">setupScheduler</a>();</div><div class="line"><a name="l00035"></a><span class="lineno">   35</span>&#160;  <span class="keywordflow">if</span> (!<a class="code" href="../../d8/dd8/class_hardware_bridge.html#a4407e65acb5e3afc54adee8adeb5627f">_interfaceLCM</a>.good()) {</div><div class="line"><a name="l00036"></a><span class="lineno">   36</span>&#160;    <a class="code" href="../../d8/dd8/class_hardware_bridge.html#a92eb174542c2885280ad77c257d887b8">initError</a>(<span class="stringliteral">&quot;_interfaceLCM failed to initialize\n&quot;</span>, <span class="keyword">false</span>);</div><div class="line"><a name="l00037"></a><span class="lineno">   37</span>&#160;  }</div><div class="line"><a name="l00038"></a><span class="lineno">   38</span>&#160;</div><div class="line"><a name="l00039"></a><span class="lineno">   39</span>&#160;  printf(<span class="stringliteral">&quot;[HardwareBridge] Subscribe LCM\n&quot;</span>);</div><div class="line"><a name="l00040"></a><span class="lineno">   40</span>&#160;  <a class="code" href="../../d8/dd8/class_hardware_bridge.html#a4407e65acb5e3afc54adee8adeb5627f">_interfaceLCM</a>.subscribe(<span class="stringliteral">&quot;interface&quot;</span>, &amp;<a class="code" href="../../d8/dd8/class_hardware_bridge.html#ae6905c9dcc7d67badb4bcd79ef6f62a1">HardwareBridge::handleGamepadLCM</a>, <span class="keyword">this</span>);</div><div class="line"><a name="l00041"></a><span class="lineno">   41</span>&#160;  <a class="code" href="../../d8/dd8/class_hardware_bridge.html#a4407e65acb5e3afc54adee8adeb5627f">_interfaceLCM</a>.subscribe(<span class="stringliteral">&quot;interface_request&quot;</span>,</div><div class="line"><a name="l00042"></a><span class="lineno">   42</span>&#160;                          &amp;<a class="code" href="../../d8/dd8/class_hardware_bridge.html#aa5bd1ccd29e15e2f0ecb5b3f65795784">HardwareBridge::handleControlParameter</a>, <span class="keyword">this</span>);</div><div class="line"><a name="l00043"></a><span class="lineno">   43</span>&#160;</div><div class="line"><a name="l00044"></a><span class="lineno">   44</span>&#160;  printf(<span class="stringliteral">&quot;[HardwareBridge] Start interface LCM handler\n&quot;</span>);</div><div class="line"><a name="l00045"></a><span class="lineno">   45</span>&#160;  <a class="code" href="../../d8/dd8/class_hardware_bridge.html#aac1696d3ecb97c660ffd9a13771892a9">_interfaceLcmThread</a> = std::thread(&amp;<a class="code" href="../../d8/dd8/class_hardware_bridge.html#aa6d23f7fccce82cb3a351dd48c4433be">HardwareBridge::handleInterfaceLCM</a>, <span class="keyword">this</span>);</div><div class="line"><a name="l00046"></a><span class="lineno">   46</span>&#160;}</div><div class="ttc" id="class_hardware_bridge_html_aa6d23f7fccce82cb3a351dd48c4433be"><div class="ttname"><a href="../../d8/dd8/class_hardware_bridge.html#aa6d23f7fccce82cb3a351dd48c4433be">HardwareBridge::handleInterfaceLCM</a></div><div class="ttdeci">void handleInterfaceLCM()</div><div class="ttdef"><b>Definition:</b> <a href="../../d9/da0/_hardware_bridge_8cpp_source.html#l00048">HardwareBridge.cpp:48</a></div></div>
<div class="ttc" id="class_hardware_bridge_html_a4407e65acb5e3afc54adee8adeb5627f"><div class="ttname"><a href="../../d8/dd8/class_hardware_bridge.html#a4407e65acb5e3afc54adee8adeb5627f">HardwareBridge::_interfaceLCM</a></div><div class="ttdeci">lcm::LCM _interfaceLCM</div><div class="ttdef"><b>Definition:</b> <a href="../../d6/dd5/_hardware_bridge_8h_source.html#l00055">HardwareBridge.h:55</a></div></div>
<div class="ttc" id="class_hardware_bridge_html_aa5bd1ccd29e15e2f0ecb5b3f65795784"><div class="ttname"><a href="../../d8/dd8/class_hardware_bridge.html#aa5bd1ccd29e15e2f0ecb5b3f65795784">HardwareBridge::handleControlParameter</a></div><div class="ttdeci">void handleControlParameter(const lcm::ReceiveBuffer *rbuf, const std::string &amp;chan, const control_parameter_request_lcmt *msg)</div><div class="ttdef"><b>Definition:</b> <a href="../../d9/da0/_hardware_bridge_8cpp_source.html#l00092">HardwareBridge.cpp:92</a></div></div>
<div class="ttc" id="class_hardware_bridge_html_a92eb174542c2885280ad77c257d887b8"><div class="ttname"><a href="../../d8/dd8/class_hardware_bridge.html#a92eb174542c2885280ad77c257d887b8">HardwareBridge::initError</a></div><div class="ttdeci">void initError(const char *reason, bool printErrno=false)</div><div class="ttdef"><b>Definition:</b> <a href="../../d9/da0/_hardware_bridge_8cpp_source.html#l00017">HardwareBridge.cpp:17</a></div></div>
<div class="ttc" id="class_hardware_bridge_html_aac1696d3ecb97c660ffd9a13771892a9"><div class="ttname"><a href="../../d8/dd8/class_hardware_bridge.html#aac1696d3ecb97c660ffd9a13771892a9">HardwareBridge::_interfaceLcmThread</a></div><div class="ttdeci">std::thread _interfaceLcmThread</div><div class="ttdef"><b>Definition:</b> <a href="../../d6/dd5/_hardware_bridge_8h_source.html#l00065">HardwareBridge.h:65</a></div></div>
<div class="ttc" id="class_hardware_bridge_html_ae6905c9dcc7d67badb4bcd79ef6f62a1"><div class="ttname"><a href="../../d8/dd8/class_hardware_bridge.html#ae6905c9dcc7d67badb4bcd79ef6f62a1">HardwareBridge::handleGamepadLCM</a></div><div class="ttdeci">void handleGamepadLCM(const lcm::ReceiveBuffer *rbuf, const std::string &amp;chan, const gamepad_lcmt *msg)</div><div class="ttdef"><b>Definition:</b> <a href="../../d9/da0/_hardware_bridge_8cpp_source.html#l00084">HardwareBridge.cpp:84</a></div></div>
<div class="ttc" id="class_hardware_bridge_html_abbe4b85c2153d1c4f9718b678587cc7b"><div class="ttname"><a href="../../d8/dd8/class_hardware_bridge.html#abbe4b85c2153d1c4f9718b678587cc7b">HardwareBridge::prefaultStack</a></div><div class="ttdeci">void prefaultStack()</div><div class="ttdef"><b>Definition:</b> <a href="../../d9/da0/_hardware_bridge_8cpp_source.html#l00060">HardwareBridge.cpp:60</a></div></div>
<div class="ttc" id="class_hardware_bridge_html_a6b4e33274b7f6f1a78987d9b5480f9b5"><div class="ttname"><a href="../../d8/dd8/class_hardware_bridge.html#a6b4e33274b7f6f1a78987d9b5480f9b5">HardwareBridge::setupScheduler</a></div><div class="ttdeci">void setupScheduler()</div><div class="ttdef"><b>Definition:</b> <a href="../../d9/da0/_hardware_bridge_8cpp_source.html#l00075">HardwareBridge.cpp:75</a></div></div>
</div><!-- fragment -->
<p><div id="dynsection-9" onclick="return toggleVisibility(this)" class="dynheader closed" style="cursor:pointer;">
  <img id="dynsection-9-trigger" src="../../closed.png" alt="+"/> Here is the call graph for this function:</div>
<div id="dynsection-9-summary" class="dynsummary" style="display:block;">
</div>
<div id="dynsection-9-content" class="dyncontent" style="display:none;">
<div class="center"><img src="../../d8/dd8/class_hardware_bridge_a4a8078bc3b30d7260281598990243262_cgraph.png" border="0" usemap="#d8/dd8/class_hardware_bridge_a4a8078bc3b30d7260281598990243262_cgraph" alt=""/></div>
<map name="d8/dd8/class_hardware_bridge_a4a8078bc3b30d7260281598990243262_cgraph" id="d8/dd8/class_hardware_bridge_a4a8078bc3b30d7260281598990243262_cgraph">
</map>
</div>
</p>

<p><div id="dynsection-10" onclick="return toggleVisibility(this)" class="dynheader closed" style="cursor:pointer;">
  <img id="dynsection-10-trigger" src="../../closed.png" alt="+"/> Here is the caller graph for this function:</div>
<div id="dynsection-10-summary" class="dynsummary" style="display:block;">
</div>
<div id="dynsection-10-content" class="dyncontent" style="display:none;">
<div class="center"><img src="../../d8/dd8/class_hardware_bridge_a4a8078bc3b30d7260281598990243262_icgraph.png" border="0" usemap="#d8/dd8/class_hardware_bridge_a4a8078bc3b30d7260281598990243262_icgraph" alt=""/></div>
<map name="d8/dd8/class_hardware_bridge_a4a8078bc3b30d7260281598990243262_icgraph" id="d8/dd8/class_hardware_bridge_a4a8078bc3b30d7260281598990243262_icgraph">
</map>
</div>
</p>

</div>
</div>
<a class="anchor" id="a92eb174542c2885280ad77c257d887b8"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void HardwareBridge::initError </td>
          <td>(</td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>reason</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">bool&#160;</td>
          <td class="paramname"><em>printErrno</em> = <code>false</code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">
<p>If an error occurs during initialization, before motors are enabled, print error and exit. </p><dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">reason</td><td>Error message string </td></tr>
    <tr><td class="paramname">printErrno</td><td>If true, also print C errno </td></tr>
  </table>
  </dd>
</dl>

<p>Definition at line <a class="el" href="../../d9/da0/_hardware_bridge_8cpp_source.html#l00017">17</a> of file <a class="el" href="../../d9/da0/_hardware_bridge_8cpp_source.html">HardwareBridge.cpp</a>.</p>
<div class="fragment"><div class="line"><a name="l00017"></a><span class="lineno">   17</span>&#160;                                                                  {</div><div class="line"><a name="l00018"></a><span class="lineno">   18</span>&#160;  printf(<span class="stringliteral">&quot;FAILED TO INITIALIZE HARDWARE: %s\n&quot;</span>, reason);</div><div class="line"><a name="l00019"></a><span class="lineno">   19</span>&#160;</div><div class="line"><a name="l00020"></a><span class="lineno">   20</span>&#160;  <span class="keywordflow">if</span> (printErrno) {</div><div class="line"><a name="l00021"></a><span class="lineno">   21</span>&#160;    printf(<span class="stringliteral">&quot;Error: %s\n&quot;</span>, strerror(errno));</div><div class="line"><a name="l00022"></a><span class="lineno">   22</span>&#160;  }</div><div class="line"><a name="l00023"></a><span class="lineno">   23</span>&#160;</div><div class="line"><a name="l00024"></a><span class="lineno">   24</span>&#160;  exit(-1);</div><div class="line"><a name="l00025"></a><span class="lineno">   25</span>&#160;}</div></div><!-- fragment -->
<p><div id="dynsection-11" onclick="return toggleVisibility(this)" class="dynheader closed" style="cursor:pointer;">
  <img id="dynsection-11-trigger" src="../../closed.png" alt="+"/> Here is the caller graph for this function:</div>
<div id="dynsection-11-summary" class="dynsummary" style="display:block;">
</div>
<div id="dynsection-11-content" class="dyncontent" style="display:none;">
<div class="center"><img src="../../d8/dd8/class_hardware_bridge_a92eb174542c2885280ad77c257d887b8_icgraph.png" border="0" usemap="#d8/dd8/class_hardware_bridge_a92eb174542c2885280ad77c257d887b8_icgraph" alt=""/></div>
<map name="d8/dd8/class_hardware_bridge_a92eb174542c2885280ad77c257d887b8_icgraph" id="d8/dd8/class_hardware_bridge_a92eb174542c2885280ad77c257d887b8_icgraph">
</map>
</div>
</p>

</div>
</div>
<a class="anchor" id="abbe4b85c2153d1c4f9718b678587cc7b"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void HardwareBridge::prefaultStack </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Writes to a 16 KB buffer on the stack. If we are using 4K pages for our stack, this will make sure that we won't have a page fault when the stack grows. Also mlock's all pages associated with the current process, which prevents the cheetah software from being swapped out. If we do run out of memory, the robot program will be killed by the OOM process killer (and leaves a log) instead of just becoming unresponsive. </p>

<p>Definition at line <a class="el" href="../../d9/da0/_hardware_bridge_8cpp_source.html#l00060">60</a> of file <a class="el" href="../../d9/da0/_hardware_bridge_8cpp_source.html">HardwareBridge.cpp</a>.</p>

<p>References <a class="el" href="../../d9/da0/_hardware_bridge_8cpp_source.html#l00017">initError()</a>, and <a class="el" href="../../d6/dd5/_hardware_bridge_8h_source.html#l00012">MAX_STACK_SIZE</a>.</p>
<div class="fragment"><div class="line"><a name="l00060"></a><span class="lineno">   60</span>&#160;                                   {</div><div class="line"><a name="l00061"></a><span class="lineno">   61</span>&#160;  printf(<span class="stringliteral">&quot;[Init] Prefault stack...\n&quot;</span>);</div><div class="line"><a name="l00062"></a><span class="lineno">   62</span>&#160;  <span class="keyword">volatile</span> <span class="keywordtype">char</span> stack[<a class="code" href="../../d6/dd5/_hardware_bridge_8h.html#accbb358028675c83675d8b34c386268d">MAX_STACK_SIZE</a>];</div><div class="line"><a name="l00063"></a><span class="lineno">   63</span>&#160;  memset(const_cast&lt;char*&gt;(stack), 0, <a class="code" href="../../d6/dd5/_hardware_bridge_8h.html#accbb358028675c83675d8b34c386268d">MAX_STACK_SIZE</a>);</div><div class="line"><a name="l00064"></a><span class="lineno">   64</span>&#160;  <span class="keywordflow">if</span> (mlockall(MCL_CURRENT | MCL_FUTURE) == -1) {</div><div class="line"><a name="l00065"></a><span class="lineno">   65</span>&#160;    <a class="code" href="../../d8/dd8/class_hardware_bridge.html#a92eb174542c2885280ad77c257d887b8">initError</a>(</div><div class="line"><a name="l00066"></a><span class="lineno">   66</span>&#160;        <span class="stringliteral">&quot;mlockall failed.  This is likely because you didn&#39;t run robot as &quot;</span></div><div class="line"><a name="l00067"></a><span class="lineno">   67</span>&#160;        <span class="stringliteral">&quot;root.\n&quot;</span>,</div><div class="line"><a name="l00068"></a><span class="lineno">   68</span>&#160;        <span class="keyword">true</span>);</div><div class="line"><a name="l00069"></a><span class="lineno">   69</span>&#160;  }</div><div class="line"><a name="l00070"></a><span class="lineno">   70</span>&#160;}</div><div class="ttc" id="class_hardware_bridge_html_a92eb174542c2885280ad77c257d887b8"><div class="ttname"><a href="../../d8/dd8/class_hardware_bridge.html#a92eb174542c2885280ad77c257d887b8">HardwareBridge::initError</a></div><div class="ttdeci">void initError(const char *reason, bool printErrno=false)</div><div class="ttdef"><b>Definition:</b> <a href="../../d9/da0/_hardware_bridge_8cpp_source.html#l00017">HardwareBridge.cpp:17</a></div></div>
<div class="ttc" id="_hardware_bridge_8h_html_accbb358028675c83675d8b34c386268d"><div class="ttname"><a href="../../d6/dd5/_hardware_bridge_8h.html#accbb358028675c83675d8b34c386268d">MAX_STACK_SIZE</a></div><div class="ttdeci">#define MAX_STACK_SIZE</div><div class="ttdef"><b>Definition:</b> <a href="../../d6/dd5/_hardware_bridge_8h_source.html#l00012">HardwareBridge.h:12</a></div></div>
</div><!-- fragment -->
<p><div id="dynsection-12" onclick="return toggleVisibility(this)" class="dynheader closed" style="cursor:pointer;">
  <img id="dynsection-12-trigger" src="../../closed.png" alt="+"/> Here is the call graph for this function:</div>
<div id="dynsection-12-summary" class="dynsummary" style="display:block;">
</div>
<div id="dynsection-12-content" class="dyncontent" style="display:none;">
<div class="center"><img src="../../d8/dd8/class_hardware_bridge_abbe4b85c2153d1c4f9718b678587cc7b_cgraph.png" border="0" usemap="#d8/dd8/class_hardware_bridge_abbe4b85c2153d1c4f9718b678587cc7b_cgraph" alt=""/></div>
<map name="d8/dd8/class_hardware_bridge_abbe4b85c2153d1c4f9718b678587cc7b_cgraph" id="d8/dd8/class_hardware_bridge_abbe4b85c2153d1c4f9718b678587cc7b_cgraph">
</map>
</div>
</p>

<p><div id="dynsection-13" onclick="return toggleVisibility(this)" class="dynheader closed" style="cursor:pointer;">
  <img id="dynsection-13-trigger" src="../../closed.png" alt="+"/> Here is the caller graph for this function:</div>
<div id="dynsection-13-summary" class="dynsummary" style="display:block;">
</div>
<div id="dynsection-13-content" class="dyncontent" style="display:none;">
<div class="center"><img src="../../d8/dd8/class_hardware_bridge_abbe4b85c2153d1c4f9718b678587cc7b_icgraph.png" border="0" usemap="#d8/dd8/class_hardware_bridge_abbe4b85c2153d1c4f9718b678587cc7b_icgraph" alt=""/></div>
<map name="d8/dd8/class_hardware_bridge_abbe4b85c2153d1c4f9718b678587cc7b_icgraph" id="d8/dd8/class_hardware_bridge_abbe4b85c2153d1c4f9718b678587cc7b_icgraph">
</map>
</div>
</p>

</div>
</div>
<a class="anchor" id="a83a317be30bef73635e34beb19a303ac"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void HardwareBridge::publishVisualizationLCM </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Definition at line <a class="el" href="../../d9/da0/_hardware_bridge_8cpp_source.html#l00305">305</a> of file <a class="el" href="../../d9/da0/_hardware_bridge_8cpp_source.html">HardwareBridge.cpp</a>.</p>

<p>References <a class="el" href="../../d6/dd5/_hardware_bridge_8h_source.html#l00054">_mainCheetahVisualization</a>, <a class="el" href="../../d6/dd5/_hardware_bridge_8h_source.html#l00056">_visualizationLCM</a>, <a class="el" href="../../df/d0d/_visualization_data_8h_source.html#l00041">CheetahVisualization::color</a>, <a class="el" href="../../df/d0d/_visualization_data_8h_source.html#l00040">CheetahVisualization::p</a>, <a class="el" href="../../df/d0d/_visualization_data_8h_source.html#l00038">CheetahVisualization::q</a>, and <a class="el" href="../../df/d0d/_visualization_data_8h_source.html#l00039">CheetahVisualization::quat</a>.</p>
<div class="fragment"><div class="line"><a name="l00305"></a><span class="lineno">  305</span>&#160;                                             {</div><div class="line"><a name="l00306"></a><span class="lineno">  306</span>&#160;  cheetah_visualization_lcmt visualization_data;</div><div class="line"><a name="l00307"></a><span class="lineno">  307</span>&#160;  <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i &lt; 3; i++) {</div><div class="line"><a name="l00308"></a><span class="lineno">  308</span>&#160;    visualization_data.x[i] = <a class="code" href="../../d8/dd8/class_hardware_bridge.html#af9442d44776906a9a3c9cea911784891">_mainCheetahVisualization</a>.<a class="code" href="../../d0/d6d/struct_cheetah_visualization.html#a0f858c48a4b04052b7f4f9346f796e3a">p</a>[i];</div><div class="line"><a name="l00309"></a><span class="lineno">  309</span>&#160;  }</div><div class="line"><a name="l00310"></a><span class="lineno">  310</span>&#160;</div><div class="line"><a name="l00311"></a><span class="lineno">  311</span>&#160;  <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i &lt; 4; i++) {</div><div class="line"><a name="l00312"></a><span class="lineno">  312</span>&#160;    visualization_data.quat[i] = <a class="code" href="../../d8/dd8/class_hardware_bridge.html#af9442d44776906a9a3c9cea911784891">_mainCheetahVisualization</a>.<a class="code" href="../../d0/d6d/struct_cheetah_visualization.html#acf5668b2a729eee91349f45010ac2940">quat</a>[i];</div><div class="line"><a name="l00313"></a><span class="lineno">  313</span>&#160;    visualization_data.rgba[i] = <a class="code" href="../../d8/dd8/class_hardware_bridge.html#af9442d44776906a9a3c9cea911784891">_mainCheetahVisualization</a>.<a class="code" href="../../d0/d6d/struct_cheetah_visualization.html#a78d3a586c160f8ec983f65f1605bacb1">color</a>[i];</div><div class="line"><a name="l00314"></a><span class="lineno">  314</span>&#160;  }</div><div class="line"><a name="l00315"></a><span class="lineno">  315</span>&#160;</div><div class="line"><a name="l00316"></a><span class="lineno">  316</span>&#160;  <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i &lt; 12; i++) {</div><div class="line"><a name="l00317"></a><span class="lineno">  317</span>&#160;    visualization_data.q[i] = <a class="code" href="../../d8/dd8/class_hardware_bridge.html#af9442d44776906a9a3c9cea911784891">_mainCheetahVisualization</a>.<a class="code" href="../../d0/d6d/struct_cheetah_visualization.html#a0ce991af43feb270e6f6c3ac31c027cd">q</a>[i];</div><div class="line"><a name="l00318"></a><span class="lineno">  318</span>&#160;  }</div><div class="line"><a name="l00319"></a><span class="lineno">  319</span>&#160;</div><div class="line"><a name="l00320"></a><span class="lineno">  320</span>&#160;  <a class="code" href="../../d8/dd8/class_hardware_bridge.html#a21be7448839aeabc1735129b851bfd42">_visualizationLCM</a>.publish(<span class="stringliteral">&quot;main_cheetah_visualization&quot;</span>, &amp;visualization_data);</div><div class="line"><a name="l00321"></a><span class="lineno">  321</span>&#160;}</div><div class="ttc" id="struct_cheetah_visualization_html_a0ce991af43feb270e6f6c3ac31c027cd"><div class="ttname"><a href="../../d0/d6d/struct_cheetah_visualization.html#a0ce991af43feb270e6f6c3ac31c027cd">CheetahVisualization::q</a></div><div class="ttdeci">Vec12&lt; float &gt; q</div><div class="ttdef"><b>Definition:</b> <a href="../../df/d0d/_visualization_data_8h_source.html#l00038">VisualizationData.h:38</a></div></div>
<div class="ttc" id="struct_cheetah_visualization_html_acf5668b2a729eee91349f45010ac2940"><div class="ttname"><a href="../../d0/d6d/struct_cheetah_visualization.html#acf5668b2a729eee91349f45010ac2940">CheetahVisualization::quat</a></div><div class="ttdeci">Quat&lt; float &gt; quat</div><div class="ttdef"><b>Definition:</b> <a href="../../df/d0d/_visualization_data_8h_source.html#l00039">VisualizationData.h:39</a></div></div>
<div class="ttc" id="struct_cheetah_visualization_html_a0f858c48a4b04052b7f4f9346f796e3a"><div class="ttname"><a href="../../d0/d6d/struct_cheetah_visualization.html#a0f858c48a4b04052b7f4f9346f796e3a">CheetahVisualization::p</a></div><div class="ttdeci">Vec3&lt; float &gt; p</div><div class="ttdef"><b>Definition:</b> <a href="../../df/d0d/_visualization_data_8h_source.html#l00040">VisualizationData.h:40</a></div></div>
<div class="ttc" id="class_hardware_bridge_html_a21be7448839aeabc1735129b851bfd42"><div class="ttname"><a href="../../d8/dd8/class_hardware_bridge.html#a21be7448839aeabc1735129b851bfd42">HardwareBridge::_visualizationLCM</a></div><div class="ttdeci">lcm::LCM _visualizationLCM</div><div class="ttdef"><b>Definition:</b> <a href="../../d6/dd5/_hardware_bridge_8h_source.html#l00056">HardwareBridge.h:56</a></div></div>
<div class="ttc" id="struct_cheetah_visualization_html_a78d3a586c160f8ec983f65f1605bacb1"><div class="ttname"><a href="../../d0/d6d/struct_cheetah_visualization.html#a78d3a586c160f8ec983f65f1605bacb1">CheetahVisualization::color</a></div><div class="ttdeci">Vec4&lt; float &gt; color</div><div class="ttdef"><b>Definition:</b> <a href="../../df/d0d/_visualization_data_8h_source.html#l00041">VisualizationData.h:41</a></div></div>
<div class="ttc" id="class_hardware_bridge_html_af9442d44776906a9a3c9cea911784891"><div class="ttname"><a href="../../d8/dd8/class_hardware_bridge.html#af9442d44776906a9a3c9cea911784891">HardwareBridge::_mainCheetahVisualization</a></div><div class="ttdeci">CheetahVisualization _mainCheetahVisualization</div><div class="ttdef"><b>Definition:</b> <a href="../../d6/dd5/_hardware_bridge_8h_source.html#l00054">HardwareBridge.h:54</a></div></div>
</div><!-- fragment -->
<p><div id="dynsection-14" onclick="return toggleVisibility(this)" class="dynheader closed" style="cursor:pointer;">
  <img id="dynsection-14-trigger" src="../../closed.png" alt="+"/> Here is the caller graph for this function:</div>
<div id="dynsection-14-summary" class="dynsummary" style="display:block;">
</div>
<div id="dynsection-14-content" class="dyncontent" style="display:none;">
<div class="center"><img src="../../d8/dd8/class_hardware_bridge_a83a317be30bef73635e34beb19a303ac_icgraph.png" border="0" usemap="#d8/dd8/class_hardware_bridge_a83a317be30bef73635e34beb19a303ac_icgraph" alt=""/></div>
<map name="d8/dd8/class_hardware_bridge_a83a317be30bef73635e34beb19a303ac_icgraph" id="d8/dd8/class_hardware_bridge_a83a317be30bef73635e34beb19a303ac_icgraph">
</map>
</div>
</p>

</div>
</div>
<a class="anchor" id="aa3e2460f9609470b32190353d9da2cd9"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void HardwareBridge::run_sbus </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Definition at line <a class="el" href="../../d9/da0/_hardware_bridge_8cpp_source.html#l00266">266</a> of file <a class="el" href="../../d9/da0/_hardware_bridge_8cpp_source.html">HardwareBridge.cpp</a>.</p>

<p>References <a class="el" href="../../d6/dd5/_hardware_bridge_8h_source.html#l00069">_port</a>, <a class="el" href="../../d2/dad/rt__sbus_8cpp_source.html#l00108">receive_sbus()</a>, and <a class="el" href="../../dd/df1/rt__interface__lcm_8cpp_source.html#l00078">sbus_packet_complete()</a>.</p>
<div class="fragment"><div class="line"><a name="l00266"></a><span class="lineno">  266</span>&#160;                              {</div><div class="line"><a name="l00267"></a><span class="lineno">  267</span>&#160;  <span class="keywordflow">if</span> (<a class="code" href="../../d8/dd8/class_hardware_bridge.html#aeb8b07d91413a757e0085ad8ac5fa300">_port</a> &gt; 0) {</div><div class="line"><a name="l00268"></a><span class="lineno">  268</span>&#160;    <span class="keywordtype">int</span> x = <a class="code" href="../../d1/d95/rt__sbus_8h.html#ab44d038981e16325d8aec78b2c1011bf">receive_sbus</a>(<a class="code" href="../../d8/dd8/class_hardware_bridge.html#aeb8b07d91413a757e0085ad8ac5fa300">_port</a>);</div><div class="line"><a name="l00269"></a><span class="lineno">  269</span>&#160;    <span class="keywordflow">if</span> (x) {</div><div class="line"><a name="l00270"></a><span class="lineno">  270</span>&#160;      <a class="code" href="../../d4/dd2/rt__interface__lcm_8h.html#a3f348fdbac738fe554e4543dee262081">sbus_packet_complete</a>();</div><div class="line"><a name="l00271"></a><span class="lineno">  271</span>&#160;    }</div><div class="line"><a name="l00272"></a><span class="lineno">  272</span>&#160;  }</div><div class="line"><a name="l00273"></a><span class="lineno">  273</span>&#160;}</div><div class="ttc" id="rt__interface__lcm_8h_html_a3f348fdbac738fe554e4543dee262081"><div class="ttname"><a href="../../d4/dd2/rt__interface__lcm_8h.html#a3f348fdbac738fe554e4543dee262081">sbus_packet_complete</a></div><div class="ttdeci">void sbus_packet_complete()</div><div class="ttdoc">Function which handles the completion of an SBUS Packet and overrides the LCM control settings as des...</div><div class="ttdef"><b>Definition:</b> <a href="../../dd/df1/rt__interface__lcm_8cpp_source.html#l00078">rt_interface_lcm.cpp:78</a></div></div>
<div class="ttc" id="class_hardware_bridge_html_aeb8b07d91413a757e0085ad8ac5fa300"><div class="ttname"><a href="../../d8/dd8/class_hardware_bridge.html#aeb8b07d91413a757e0085ad8ac5fa300">HardwareBridge::_port</a></div><div class="ttdeci">int _port</div><div class="ttdef"><b>Definition:</b> <a href="../../d6/dd5/_hardware_bridge_8h_source.html#l00069">HardwareBridge.h:69</a></div></div>
<div class="ttc" id="rt__sbus_8h_html_ab44d038981e16325d8aec78b2c1011bf"><div class="ttname"><a href="../../d1/d95/rt__sbus_8h.html#ab44d038981e16325d8aec78b2c1011bf">receive_sbus</a></div><div class="ttdeci">int receive_sbus(int port)</div><div class="ttdef"><b>Definition:</b> <a href="../../d2/dad/rt__sbus_8cpp_source.html#l00108">rt_sbus.cpp:108</a></div></div>
</div><!-- fragment -->
<p><div id="dynsection-15" onclick="return toggleVisibility(this)" class="dynheader closed" style="cursor:pointer;">
  <img id="dynsection-15-trigger" src="../../closed.png" alt="+"/> Here is the call graph for this function:</div>
<div id="dynsection-15-summary" class="dynsummary" style="display:block;">
</div>
<div id="dynsection-15-content" class="dyncontent" style="display:none;">
<div class="center"><img src="../../d8/dd8/class_hardware_bridge_aa3e2460f9609470b32190353d9da2cd9_cgraph.png" border="0" usemap="#d8/dd8/class_hardware_bridge_aa3e2460f9609470b32190353d9da2cd9_cgraph" alt=""/></div>
<map name="d8/dd8/class_hardware_bridge_aa3e2460f9609470b32190353d9da2cd9_cgraph" id="d8/dd8/class_hardware_bridge_aa3e2460f9609470b32190353d9da2cd9_cgraph">
</map>
</div>
</p>

<p><div id="dynsection-16" onclick="return toggleVisibility(this)" class="dynheader closed" style="cursor:pointer;">
  <img id="dynsection-16-trigger" src="../../closed.png" alt="+"/> Here is the caller graph for this function:</div>
<div id="dynsection-16-summary" class="dynsummary" style="display:block;">
</div>
<div id="dynsection-16-content" class="dyncontent" style="display:none;">
<div class="center"><img src="../../d8/dd8/class_hardware_bridge_aa3e2460f9609470b32190353d9da2cd9_icgraph.png" border="0" usemap="#d8/dd8/class_hardware_bridge_aa3e2460f9609470b32190353d9da2cd9_icgraph" alt=""/></div>
<map name="d8/dd8/class_hardware_bridge_aa3e2460f9609470b32190353d9da2cd9_icgraph" id="d8/dd8/class_hardware_bridge_aa3e2460f9609470b32190353d9da2cd9_icgraph">
</map>
</div>
</p>

</div>
</div>
<a class="anchor" id="a6b4e33274b7f6f1a78987d9b5480f9b5"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void HardwareBridge::setupScheduler </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Configures the </p>

<p>Definition at line <a class="el" href="../../d9/da0/_hardware_bridge_8cpp_source.html#l00075">75</a> of file <a class="el" href="../../d9/da0/_hardware_bridge_8cpp_source.html">HardwareBridge.cpp</a>.</p>

<p>References <a class="el" href="../../d9/da0/_hardware_bridge_8cpp_source.html#l00017">initError()</a>, and <a class="el" href="../../d6/dd5/_hardware_bridge_8h_source.html#l00013">TASK_PRIORITY</a>.</p>
<div class="fragment"><div class="line"><a name="l00075"></a><span class="lineno">   75</span>&#160;                                    {</div><div class="line"><a name="l00076"></a><span class="lineno">   76</span>&#160;  printf(<span class="stringliteral">&quot;[Init] Setup RT Scheduler...\n&quot;</span>);</div><div class="line"><a name="l00077"></a><span class="lineno">   77</span>&#160;  <span class="keyword">struct </span>sched_param params;</div><div class="line"><a name="l00078"></a><span class="lineno">   78</span>&#160;  params.sched_priority = <a class="code" href="../../d6/dd5/_hardware_bridge_8h.html#a82dd0a9ae27bdb2c3cdd33bb7804861c">TASK_PRIORITY</a>;</div><div class="line"><a name="l00079"></a><span class="lineno">   79</span>&#160;  <span class="keywordflow">if</span> (sched_setscheduler(0, SCHED_FIFO, &amp;params) == -1) {</div><div class="line"><a name="l00080"></a><span class="lineno">   80</span>&#160;    <a class="code" href="../../d8/dd8/class_hardware_bridge.html#a92eb174542c2885280ad77c257d887b8">initError</a>(<span class="stringliteral">&quot;sched_setscheduler failed.\n&quot;</span>, <span class="keyword">true</span>);</div><div class="line"><a name="l00081"></a><span class="lineno">   81</span>&#160;  }</div><div class="line"><a name="l00082"></a><span class="lineno">   82</span>&#160;}</div><div class="ttc" id="class_hardware_bridge_html_a92eb174542c2885280ad77c257d887b8"><div class="ttname"><a href="../../d8/dd8/class_hardware_bridge.html#a92eb174542c2885280ad77c257d887b8">HardwareBridge::initError</a></div><div class="ttdeci">void initError(const char *reason, bool printErrno=false)</div><div class="ttdef"><b>Definition:</b> <a href="../../d9/da0/_hardware_bridge_8cpp_source.html#l00017">HardwareBridge.cpp:17</a></div></div>
<div class="ttc" id="_hardware_bridge_8h_html_a82dd0a9ae27bdb2c3cdd33bb7804861c"><div class="ttname"><a href="../../d6/dd5/_hardware_bridge_8h.html#a82dd0a9ae27bdb2c3cdd33bb7804861c">TASK_PRIORITY</a></div><div class="ttdeci">#define TASK_PRIORITY</div><div class="ttdef"><b>Definition:</b> <a href="../../d6/dd5/_hardware_bridge_8h_source.html#l00013">HardwareBridge.h:13</a></div></div>
</div><!-- fragment -->
<p><div id="dynsection-17" onclick="return toggleVisibility(this)" class="dynheader closed" style="cursor:pointer;">
  <img id="dynsection-17-trigger" src="../../closed.png" alt="+"/> Here is the call graph for this function:</div>
<div id="dynsection-17-summary" class="dynsummary" style="display:block;">
</div>
<div id="dynsection-17-content" class="dyncontent" style="display:none;">
<div class="center"><img src="../../d8/dd8/class_hardware_bridge_a6b4e33274b7f6f1a78987d9b5480f9b5_cgraph.png" border="0" usemap="#d8/dd8/class_hardware_bridge_a6b4e33274b7f6f1a78987d9b5480f9b5_cgraph" alt=""/></div>
<map name="d8/dd8/class_hardware_bridge_a6b4e33274b7f6f1a78987d9b5480f9b5_cgraph" id="d8/dd8/class_hardware_bridge_a6b4e33274b7f6f1a78987d9b5480f9b5_cgraph">
</map>
</div>
</p>

<p><div id="dynsection-18" onclick="return toggleVisibility(this)" class="dynheader closed" style="cursor:pointer;">
  <img id="dynsection-18-trigger" src="../../closed.png" alt="+"/> Here is the caller graph for this function:</div>
<div id="dynsection-18-summary" class="dynsummary" style="display:block;">
</div>
<div id="dynsection-18-content" class="dyncontent" style="display:none;">
<div class="center"><img src="../../d8/dd8/class_hardware_bridge_a6b4e33274b7f6f1a78987d9b5480f9b5_icgraph.png" border="0" usemap="#d8/dd8/class_hardware_bridge_a6b4e33274b7f6f1a78987d9b5480f9b5_icgraph" alt=""/></div>
<map name="d8/dd8/class_hardware_bridge_a6b4e33274b7f6f1a78987d9b5480f9b5_icgraph" id="d8/dd8/class_hardware_bridge_a6b4e33274b7f6f1a78987d9b5480f9b5_icgraph">
</map>
</div>
</p>

</div>
</div>
<h2 class="groupheader">Member Data Documentation</h2>
<a class="anchor" id="a80a343c681ff51562b875190a7b2f4dc"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">bool HardwareBridge::_firstRun = true</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Definition at line <a class="el" href="../../d6/dd5/_hardware_bridge_8h_source.html#l00061">61</a> of file <a class="el" href="../../d6/dd5/_hardware_bridge_8h_source.html">HardwareBridge.h</a>.</p>

</div>
</div>
<a class="anchor" id="a0928b007abfd50e0edc7d38de4bce932"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="../../d4/d51/struct_gamepad_command.html">GamepadCommand</a> HardwareBridge::_gamepadCommand</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Definition at line <a class="el" href="../../d6/dd5/_hardware_bridge_8h_source.html#l00052">52</a> of file <a class="el" href="../../d6/dd5/_hardware_bridge_8h_source.html">HardwareBridge.h</a>.</p>

</div>
</div>
<a class="anchor" id="a4407e65acb5e3afc54adee8adeb5627f"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">lcm::LCM HardwareBridge::_interfaceLCM</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Definition at line <a class="el" href="../../d6/dd5/_hardware_bridge_8h_source.html#l00055">55</a> of file <a class="el" href="../../d6/dd5/_hardware_bridge_8h_source.html">HardwareBridge.h</a>.</p>

</div>
</div>
<a class="anchor" id="aa78e0f3c26667723c9501963aafa9173"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">volatile bool HardwareBridge::_interfaceLcmQuit = false</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Definition at line <a class="el" href="../../d6/dd5/_hardware_bridge_8h_source.html#l00066">66</a> of file <a class="el" href="../../d6/dd5/_hardware_bridge_8h_source.html">HardwareBridge.h</a>.</p>

</div>
</div>
<a class="anchor" id="aac1696d3ecb97c660ffd9a13771892a9"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">std::thread HardwareBridge::_interfaceLcmThread</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Definition at line <a class="el" href="../../d6/dd5/_hardware_bridge_8h_source.html#l00065">65</a> of file <a class="el" href="../../d6/dd5/_hardware_bridge_8h_source.html">HardwareBridge.h</a>.</p>

</div>
</div>
<a class="anchor" id="ab0027a2f7c8b03445478043806ec230c"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="../../d0/d99/c_types_8h.html#a3f7e2bcbb0b4c338f3c4f6c937cd4234">u64</a> HardwareBridge::_iterations = 0</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Definition at line <a class="el" href="../../d6/dd5/_hardware_bridge_8h_source.html#l00064">64</a> of file <a class="el" href="../../d6/dd5/_hardware_bridge_8h_source.html">HardwareBridge.h</a>.</p>

</div>
</div>
<a class="anchor" id="af9442d44776906a9a3c9cea911784891"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="../../d0/d6d/struct_cheetah_visualization.html">CheetahVisualization</a> HardwareBridge::_mainCheetahVisualization</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Definition at line <a class="el" href="../../d6/dd5/_hardware_bridge_8h_source.html#l00054">54</a> of file <a class="el" href="../../d6/dd5/_hardware_bridge_8h_source.html">HardwareBridge.h</a>.</p>

</div>
</div>
<a class="anchor" id="a4b91d691aac1ad94f0c600e2ec2e084a"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">control_parameter_respones_lcmt HardwareBridge::_parameter_response_lcmt</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Definition at line <a class="el" href="../../d6/dd5/_hardware_bridge_8h_source.html#l00057">57</a> of file <a class="el" href="../../d6/dd5/_hardware_bridge_8h_source.html">HardwareBridge.h</a>.</p>

</div>
</div>
<a class="anchor" id="aeb8b07d91413a757e0085ad8ac5fa300"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">int HardwareBridge::_port</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Definition at line <a class="el" href="../../d6/dd5/_hardware_bridge_8h_source.html#l00069">69</a> of file <a class="el" href="../../d6/dd5/_hardware_bridge_8h_source.html">HardwareBridge.h</a>.</p>

</div>
</div>
<a class="anchor" id="ad52a70b35d6c19a736ea3287d974c66d"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="../../d0/d73/class_robot_control_parameters.html">RobotControlParameters</a> HardwareBridge::_robotParams</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Definition at line <a class="el" href="../../d6/dd5/_hardware_bridge_8h_source.html#l00063">63</a> of file <a class="el" href="../../d6/dd5/_hardware_bridge_8h_source.html">HardwareBridge.h</a>.</p>

</div>
</div>
<a class="anchor" id="ae259e674ae1cd4f3043fdd0236038617"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="../../d9/d42/class_robot_runner.html">RobotRunner</a>* HardwareBridge::_robotRunner = nullptr</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Definition at line <a class="el" href="../../d6/dd5/_hardware_bridge_8h_source.html#l00062">62</a> of file <a class="el" href="../../d6/dd5/_hardware_bridge_8h_source.html">HardwareBridge.h</a>.</p>

</div>
</div>
<a class="anchor" id="a5ccd0cdd11a61439a08f8f7301f3294f"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="../../d0/ddd/struct_spi_command.html">SpiCommand</a> HardwareBridge::_spiCommand</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Definition at line <a class="el" href="../../d6/dd5/_hardware_bridge_8h_source.html#l00059">59</a> of file <a class="el" href="../../d6/dd5/_hardware_bridge_8h_source.html">HardwareBridge.h</a>.</p>

</div>
</div>
<a class="anchor" id="aa700e6321dfd8badb647e198349d3fb7"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="../../d5/d09/struct_spi_data.html">SpiData</a> HardwareBridge::_spiData</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Definition at line <a class="el" href="../../d6/dd5/_hardware_bridge_8h_source.html#l00058">58</a> of file <a class="el" href="../../d6/dd5/_hardware_bridge_8h_source.html">HardwareBridge.h</a>.</p>

</div>
</div>
<a class="anchor" id="ab8487082663e527210d4e1d89387902b"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="../../d8/d86/class_control_parameters.html">ControlParameters</a>* HardwareBridge::_userControlParameters = nullptr</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Definition at line <a class="el" href="../../d6/dd5/_hardware_bridge_8h_source.html#l00067">67</a> of file <a class="el" href="../../d6/dd5/_hardware_bridge_8h_source.html">HardwareBridge.h</a>.</p>

</div>
</div>
<a class="anchor" id="ac5270dbb17267e1ac3681ce92215296b"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="../../d3/d60/struct_visualization_data.html">VisualizationData</a> HardwareBridge::_visualizationData</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Definition at line <a class="el" href="../../d6/dd5/_hardware_bridge_8h_source.html#l00053">53</a> of file <a class="el" href="../../d6/dd5/_hardware_bridge_8h_source.html">HardwareBridge.h</a>.</p>

</div>
</div>
<a class="anchor" id="a21be7448839aeabc1735129b851bfd42"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">lcm::LCM HardwareBridge::_visualizationLCM</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Definition at line <a class="el" href="../../d6/dd5/_hardware_bridge_8h_source.html#l00056">56</a> of file <a class="el" href="../../d6/dd5/_hardware_bridge_8h_source.html">HardwareBridge.h</a>.</p>

</div>
</div>
<a class="anchor" id="aa63048fffaaddf1c55a8f18a785396ec"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="../../dc/d6d/class_print_task_status.html">PrintTaskStatus</a> HardwareBridge::statusTask</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Definition at line <a class="el" href="../../d6/dd5/_hardware_bridge_8h_source.html#l00051">51</a> of file <a class="el" href="../../d6/dd5/_hardware_bridge_8h_source.html">HardwareBridge.h</a>.</p>

</div>
</div>
<a class="anchor" id="a0389f737fe143e8a4bbf9433c129d149"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="../../d2/d31/class_periodic_task_manager.html">PeriodicTaskManager</a> HardwareBridge::taskManager</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Definition at line <a class="el" href="../../d6/dd5/_hardware_bridge_8h_source.html#l00050">50</a> of file <a class="el" href="../../d6/dd5/_hardware_bridge_8h_source.html">HardwareBridge.h</a>.</p>

</div>
</div>
<hr/>The documentation for this class was generated from the following files:<ul>
<li><a class="el" href="../../d6/dd5/_hardware_bridge_8h_source.html">HardwareBridge.h</a></li>
<li><a class="el" href="../../d9/da0/_hardware_bridge_8cpp_source.html">HardwareBridge.cpp</a></li>
</ul>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
  <ul>
    <li class="navelem"><a class="el" href="../../d8/dd8/class_hardware_bridge.html">HardwareBridge</a></li>
    <li class="footer">Generated by
    <a href="http://www.doxygen.org/index.html">
    <img class="footer" src="../../doxygen.png" alt="doxygen"/></a> 1.8.11 </li>
  </ul>
</div>
</body>
</html>
